var sharedChunk = {
  key: "3e9570a57bd56067a3e7bb5d4919789b",
  db: "D",
  nebulaVersion: "3_22_11_10_00",
  movingDraw: false,
  host: "https://webapi.amap.com",
};
(function(exports) {
  var extend = function(t) {
      for (var e = [], r = 1; r < arguments.length; r++)
          e[r - 1] = arguments[r];
      for (var n, i, a = Array.prototype.slice.call(arguments, 1), o = 0, s = a.length; o < s; o += 1)
          for (var u in n = a[o] || {})
              n.hasOwnProperty(u) && ("function" == typeof (i = n[u]) && t.prototype ? t.prototype[u] = i : t[u] = i);
      return t
  };
  function isBrowser() {
      return "undefined" != typeof window && "undefined" != typeof document
  }
  function isWasmSuppport() {
      try {
          if ("object" == typeof WebAssembly && "function" == typeof WebAssembly.instantiate && TextDecoder && TextEncoder) {
              var t = new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0]));
              if (t instanceof WebAssembly.Module)
                  return new WebAssembly.Instance(t)instanceof WebAssembly.Instance
          }
      } catch (t) {}
      return !1
  }
  var testWepP = function(t) {
      var e = new Image;
      e.src = "",
      e.onload = e.onerror = function() {
          t(2 === e.height)
      }
  };
  function isWorkerEnv() {
      try {
          return document,
          !1
      } catch (t) {
          return !0
      }
  }
  function getSupport(e) {
      var t = {
          runSupport: (new Date).getTime()
      }
        , r = isWasmSuppport()
        , n = navigator.userAgent.toLowerCase()
        , a = !0
        , o = (i = function(t) {
          return -1 !== n.indexOf(t)
      }
      )("macintosh")
        , s = i("ipad;") || i("ipad ")
        , u = i("ipod touch;")
        , c = i("iphone;") || i("iphone ")
        , f = c || s || u
        , l = (o || f) && i("safari") && i("version/")
        , h = i("macwechat")
        , d = i("windowswechat")
        , v = {
          touch: !1,
          mac: o,
          Ue: !1,
          webkit: !1,
          $e: !1,
          scale: 1,
          android: !1,
          DW: isWorkerEnv(),
          wasm: r,
          safari: l,
          AQ: h,
          gQ: d,
          amapRunTime: t
      };
      if (isBrowser()) {
          var g = window
            , p = (b = document).documentElement
            , m = /([a-z0-9]*\d+[a-z0-9]*)/
            , y = "google swiftshader;microsoft basic render driver;vmware svga 3d;Intel 965GM;Intel B43;Intel G41;Intel G45;Intel G965;Intel GMA 3600;Intel Mobile 4;Intel Mobile 45;Intel Mobile 965".split(";")
            , T = "ActiveXObject"in g
            , x = 0 != window.detectRetina && ("devicePixelRatio"in g && 1 < g.devicePixelRatio || T && "matchMedia"in g && g.matchMedia("(min-resolution:144dpi)") && g.matchMedia("(min-resolution:144dpi)").matches)
            , w = i("windows nt")
            , A = (n.search(/windows nt [1-5]\./),
          n.search(/windows nt 5\.[12]/),
          i("windows nt 10"),
          i("windows phone"))
            , M = i("Mb2345Browser")
            , S = (f && n.search(/ os [456]_/),
          f && n.search(/ os [4-8]_/),
          f && n.search(/ os [78]_/),
          f && i("os 8_"),
          f && i("os 10_"))
            , P = i("android")
            , I = 0;
          P && (I = parseInt(n.split("android")[1]) || 0);
          var $ = P && I < 4
            , C = (P && 5 <= I || n.search(/android 4.4/),
          P ? "android" : f ? "ios" : w ? "windows" : o ? "mac" : "other")
            , k = T && !g.XMLHttpRequest
            , N = T && !b.querySelector
            , L = T && !b.addEventListener
            , O = T && i("msie 9")
            , _ = T && i("msie 10")
            , E = T && i("rv:11")
            , U = L || O
            , R = i("edge")
            , j = (i("qtweb"),
          i("ucbrowser"))
            , D = i("alipay") || P && j
            , F = (i("miuibrowser"),
          i("micromessenger"))
            , B = i("dingtalk")
            , G = i("mqqbrowser")
            , z = i("baidubrowser")
            , V = i("crios/")
            , H = i("chrome/")
            , W = !((H || V) && i("chromium")) && (H && 30 < parseInt(n.split("chrome/")[1]) || V && 30 < parseInt(n.split("crios/")[1]))
            , q = i("firefox")
            , X = q && 27 < parseInt(n.split("firefox/")[1])
            , Y = l && 7 < parseInt(n.split("version/")[1])
            , K = (f && i("aliapp"),
          P || f || A || i("mobile"))
            , Z = "ontouchstart"in b
            , J = g.navigator && g.navigator.msPointerEnabled && !!g.navigator.msMaxTouchPoints
            , Q = g.navigator && !!g.navigator.maxTouchPoints
            , tt = !Z && (Q || J)
            , et = Z || tt
            , u = function() {
              if (!K)
                  return g.devicePixelRatio || 1;
              var t = document.getElementsByTagName("meta");
              if (window.parent && window.parent !== window)
                  try {
                      if (window.parent.location.origin !== window.location.origin)
                          return 1;
                      t = window.parent.document.getElementsByTagName("meta")
                  } catch (t) {
                      return 1
                  }
              for (var e = t.length - 1; 0 <= e; --e)
                  if ("viewport" === t[e].name) {
                      var i, a, r = t[e].content, n = void 0;
                      return -1 !== r.indexOf("initial-scale") && (n = parseFloat(r.split("initial-scale=")[1])),
                      i = -1 !== r.indexOf("minimum-scale") ? parseFloat(r.split("minimum-scale=")[1]) : 0,
                      a = -1 !== r.indexOf("maximum-scale") ? parseFloat(r.split("maximum-scale=")[1]) : 1 / 0,
                      n ? i <= a ? a < n ? a : n < i ? i : n : (console && console.log && console.log("viewport参数不合法"),
                      null) : i <= a ? 1 <= i ? 1 : Math.min(a, 1) : (console && console.log && console.log("viewport参数不合法"),
                      null)
                  }
          }()
            , rt = x && (!K || !!u && 1 <= u)
            , h = T && "transition"in p.style
            , d = !!b.createElementNS && !!b.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect
            , nt = b.createElement("canvas")
            , it = !(!nt || !nt.getContext)
            , I = window.URL || window.webkitURL
            , at = !0 !== window.disableWorker && !T && !(j && P && !W) && window.Worker && I && I.createObjectURL && window.Blob
            , ot = ""
            , st = ""
            , ut = 0
            , V = 0 != window.higtQualityRender || !x
            , A = window.movingDraw
            , ct = {
              alpha: !0,
              antialias: V,
              depth: !0,
              stencil: !0
          }
            , b = (Z = function() {
              if (!it || !at)
                  return !1;
              for (var t = ["webgl", "experimental-webgl", "moz-webgl"], e = null, r = 0; r < t.length; r += 1) {
                  try {
                      e = nt.getContext(t[r], ct)
                  } catch (t) {}
                  if (e) {
                      if (e.drawingBufferWidth !== nt.width || e.drawingBufferHeight !== nt.height)
                          return !1;
                      if (!e.getShaderPrecisionFormat || !e.getParameter || !e.getExtension)
                          return !1;
                      ut = e.getParameter(e.MAX_RENDERBUFFER_SIZE);
                      var n = e.getParameter(e.MAX_VIEWPORT_DIMS);
                      if (!n)
                          return !1;
                      if (ut = Math.min(ut, n[0], n[1]),
                      l && "mac" == C && (ut = Math.min(ut, 4096)),
                      n = Math.max(screen.width, screen.height),
                      rt && (n *= Math.min(2, window.devicePixelRatio || 1)),
                      ut < n)
                          return !1;
                      if (e.getShaderPrecisionFormat(35632, 36338).precision < 23 || e.getShaderPrecisionFormat(35633, 36338).precision < 23)
                          return !1;
                      if (n = function(t) {
                          if (!t)
                              return null;
                          var e = null;
                          if (0 <= (t = (t = (r = (t = t.toLowerCase()).match(/angle \((.*)\)/)) ? (t = r[1]).replace(/\s*direct3d.*$/, "") : t).replace(/\s*\([^\)]*wddm[^\)]*\)/, "")).indexOf("intel"))
                              return e = ["Intel"],
                              0 <= t.indexOf("mobile") && e.push("Mobile"),
                              (0 <= t.indexOf("gma") || 0 <= t.indexOf("graphics media accelerator")) && e.push("GMA"),
                              0 <= t.indexOf("haswell") ? e.push("Haswell") : 0 <= t.indexOf("ivy") ? e.push("HD 4000") : 0 <= t.indexOf("sandy") ? e.push("HD 3000") : 0 <= t.indexOf("ironlake") ? e.push("HD") : (0 <= t.indexOf("hd") && e.push("HD"),
                              (n = t.match(m)) && e.push(n[1].toUpperCase())),
                              e.join(" ");
                          if (0 <= t.indexOf("nvidia") || 0 <= t.indexOf("quadro") || 0 <= t.indexOf("geforce") || 0 <= t.indexOf("nvs"))
                              return e = ["nVidia"],
                              0 <= t.indexOf("geforce") && e.push("geForce"),
                              0 <= t.indexOf("quadro") && e.push("Quadro"),
                              0 <= t.indexOf("nvs") && e.push("NVS"),
                              t.match(/\bion\b/) && e.push("ION"),
                              t.match(/gtx\b/) ? e.push("GTX") : t.match(/gts\b/) ? e.push("GTS") : t.match(/gt\b/) ? e.push("GT") : t.match(/gs\b/) ? e.push("GS") : t.match(/ge\b/) ? e.push("GE") : t.match(/fx\b/) && e.push("FX"),
                              (n = t.match(m)) && e.push(n[1].toUpperCase().replace("GS", "")),
                              0 <= t.indexOf("titan") ? e.push("TITAN") : 0 <= t.indexOf("ti") && e.push("Ti"),
                              e.join(" ");
                          if (0 <= t.indexOf("amd") || 0 <= t.indexOf("ati") || 0 <= t.indexOf("radeon") || 0 <= t.indexOf("firegl") || 0 <= t.indexOf("firepro")) {
                              var n, r, e = ["AMD"];
                              return 0 <= t.indexOf("mobil") && e.push("Mobility"),
                              0 <= (r = t.indexOf("radeon")) && e.push("Radeon"),
                              0 <= t.indexOf("firepro") ? e.push("FirePro") : 0 <= t.indexOf("firegl") && e.push("FireGL"),
                              0 <= t.indexOf("hd") && e.push("HD"),
                              (n = (t = 0 <= r ? t.substring(r) : t).match(m)) && e.push(n[1].toUpperCase().replace("HD", "")),
                              e.join(" ")
                          }
                          return t.substring(0, 100)
                      }(st = e.getExtension("WEBGL_debug_renderer_info") ? e.getParameter(37446) : null)) {
                          if (-1 < n.indexOf("google swiftshader"))
                              return a = !1;
                          if (-1 !== y.indexOf(n))
                              return !1
                      }
                      return ot = t[r],
                      !0
                  }
              }
              return !1
          }
          )()
            , I = void 0 === e[8] || e[8]
            , V = window.Uint8Array && I && !window.forbidenWebGL && b && (window.forceWebGL || (W || X || Y || R || F || B) && "other" != C)
            , b = window.forceWebGLBaseRender || V ? "w" : "d"
            , W = i("webkit")
            , X = "WebKitCSSMatrix"in g && "m11"in new window.WebKitCSSMatrix
            , Y = "MozPerspective"in p.style
            , B = "vV"in p.style
            , i = h || X || Y || B
            , p = void 0 !== e[12] ? e[12] : null
            , e = !0;
          try {
              void 0 === g.localStorage ? e = !1 : (ft = (new Date).getTime() + "",
              g.localStorage.setItem("_test", ft),
              g.localStorage.getItem("_test") !== ft && (e = !1),
              g.localStorage.removeItem("_test"))
          } catch (t) {
              e = !1
          }
          var ft = parseInt(n.split("chrome/")[1])
            , v = {
              iPad: s,
              iPhone: c,
              size: c ? 100 : P ? 200 : 500,
              mac: o,
              windows: w,
              ios: f,
              uT: S,
              android: P,
              android23: $,
              cT: D,
              plat: C,
              baidu: z,
              qq: G,
              safari: l,
              wechat: F,
              ie: T,
              ie6: k,
              ie7: N,
              ie9: O,
              ie10: _,
              ielt9: L,
              fT: U,
              ie11: E,
              edge: R,
              hT: T && !E,
              lT: M,
              RL: e,
              vT: p,
              geolocation: K || T && !L || R,
              SL: j,
              uc: j && !H,
              chrome: H,
              gT: !0,
              firefox: q,
              hardwareAccEnabled: a,
              $e: K,
              mobileWebkit: K && W,
              mobileWebkit3d: K && X,
              mobileOpera: K && g.opera,
              Ue: x,
              bT: u,
              Mr: rt,
              touch: et,
              msPointer: J,
              pointer: Q,
              yT: tt,
              pT: H && 57 <= ft,
              mT: !K && H && 64 <= ft,
              webkit: W,
              ie3d: h,
              webkit3d: X,
              gecko3d: Y,
              opera3d: B,
              any3d: i,
              isSvg: d,
              isCanvas: it,
              isWorker: at,
              TT: !1,
              isWebGL: V,
              AT: ot,
              xT: ct,
              ST: st,
              wT: ut,
              MT: !1,
              movingDraw: A,
              baseRender: I ? b : "d",
              scale: x ? 2 : 1,
              getContext: function(t, e) {
                  var r = {};
                  return extend(r, ct),
                  extend(r, e),
                  t.getContext(ot, r)
              },
              mH: !1,
              wasm: r,
              amapRunTime: t,
              sY: Z
          };
          testWepP(function(t) {
              v.mH = t
          })
      }
      return v
  }
  var Browser = getSupport("undefined" == typeof config ? [] : config);
  "undefined" != typeof createImageBitmap && "undefined" != typeof ImageBitmap && (Browser.imageBitmap = !0);
  var canceledWorkerFetch = Boolean(Browser.DW ? !Browser.safari && !Browser.AQ && !Browser.gQ && self.fetch && self.Request && self.AbortController && self.Request.prototype.hasOwnProperty("signal") : !Browser.safari && !Browser.AQ && !Browser.gQ && window.fetch && window.Request && window.AbortController && window.Request.prototype.hasOwnProperty("signal"));
  Browser.LZ = canceledWorkerFetch,
  Browser.amapRunTime = {
      workerTime: {}
  };
  var freeGlobal = "object" == typeof global && global && global.Object === Object && global
    , freeSelf = "object" == typeof self && self && self.Object === Object && self
    , root = freeGlobal || freeSelf || Function("return this")()
    , Symbol = root.Symbol
    , objectProto = Object.prototype
    , hasOwnProperty = objectProto.hasOwnProperty
    , nativeObjectToString = objectProto.toString
    , symToStringTag = Symbol ? Symbol.toStringTag : void 0;
  function getRawTag(t) {
      var e = hasOwnProperty.call(t, symToStringTag)
        , r = t[symToStringTag];
      try {
          var n = !(t[symToStringTag] = void 0)
      } catch (t) {}
      var i = nativeObjectToString.call(t);
      return n && (e ? t[symToStringTag] = r : delete t[symToStringTag]),
      i
  }
  var objectProto$1 = Object.prototype
    , nativeObjectToString$1 = objectProto$1.toString;
  function objectToString(t) {
      return nativeObjectToString$1.call(t)
  }
  var nullTag = "[object Null]"
    , undefinedTag = "[object Undefined]"
    , symToStringTag$1 = Symbol ? Symbol.toStringTag : void 0;
  function baseGetTag(t) {
      return null == t ? void 0 === t ? undefinedTag : nullTag : (symToStringTag$1 && symToStringTag$1 in Object(t) ? getRawTag : objectToString)(t)
  }
  function isObjectLike(t) {
      return null != t && "object" == typeof t
  }
  var symbolTag = "[object Symbol]";
  function isSymbol(t) {
      return "symbol" == typeof t || isObjectLike(t) && baseGetTag(t) == symbolTag
  }
  function arrayMap(t, e) {
      for (var r = -1, n = null == t ? 0 : t.length, i = Array(n); ++r < n; )
          i[r] = e(t[r], r, t);
      return i
  }
  var isArray = Array.isArray
    , INFINITY = 1 / 0
    , symbolProto = Symbol ? Symbol.prototype : void 0
    , symbolToString = symbolProto ? symbolProto.toString : void 0;
  function baseToString(t) {
      if ("string" == typeof t)
          return t;
      if (isArray(t))
          return arrayMap(t, baseToString) + "";
      if (isSymbol(t))
          return symbolToString ? symbolToString.call(t) : "";
      var e = t + "";
      return "0" == e && 1 / t == -INFINITY ? "-0" : e
  }
  var reWhitespace = /\s/;
  function trimmedEndIndex(t) {
      for (var e = t.length; e-- && reWhitespace.test(t.charAt(e)); )
          ;
      return e
  }
  var reTrimStart = /^\s+/;
  function baseTrim(t) {
      return t && t.slice(0, trimmedEndIndex(t) + 1).replace(reTrimStart, "")
  }
  function isObject(t) {
      var e = typeof t;
      return null != t && ("object" == e || "function" == e)
  }
  var NAN = NaN
    , reIsBadHex = /^[-+]0x[0-9a-f]+$/i
    , reIsBinary = /^0b[01]+$/i
    , reIsOctal = /^0o[0-7]+$/i
    , freeParseInt = parseInt;
  function toNumber(t) {
      if ("number" == typeof t)
          return t;
      if (isSymbol(t))
          return NAN;
      if ("string" != typeof (t = isObject(t) ? isObject(e = "function" == typeof t.valueOf ? t.valueOf() : t) ? e + "" : e : t))
          return 0 === t ? t : +t;
      t = baseTrim(t);
      var e = reIsBinary.test(t);
      return e || reIsOctal.test(t) ? freeParseInt(t.slice(2), e ? 2 : 8) : reIsBadHex.test(t) ? NAN : +t
  }
  var INFINITY$1 = 1 / 0
    , MAX_INTEGER = 17976931348623157e292;
  function toFinite(t) {
      return t ? (t = toNumber(t)) !== INFINITY$1 && t !== -INFINITY$1 ? t == t ? t : 0 : (t < 0 ? -1 : 1) * MAX_INTEGER : 0 === t ? t : 0
  }
  function toInteger(t) {
      var e = toFinite(t)
        , t = e % 1;
      return e == e ? t ? e - t : e : 0
  }
  function identity(t) {
      return t
  }
  var asyncTag = "[object AsyncFunction]"
    , funcTag = "[object Function]"
    , genTag = "[object GeneratorFunction]"
    , proxyTag = "[object Proxy]";
  function isFunction(t) {
      return !!isObject(t) && ((t = baseGetTag(t)) == funcTag || t == genTag || t == asyncTag || t == proxyTag)
  }
  var coreJsData = root["__core-js_shared__"], maskSrcKey = (Ab = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.Xb || ""),
  Ab ? "Symbol(src)_1." + Ab : ""), Ab;
  function isMasked(t) {
      return maskSrcKey && maskSrcKey in t
  }
  var funcProto = Function.prototype
    , funcToString = funcProto.toString;
  function toSource(t) {
      if (null != t) {
          try {
              return funcToString.call(t)
          } catch (t) {}
          try {
              return t + ""
          } catch (t) {}
      }
      return ""
  }
  var reRegExpChar = /[\\^$.*+?()[\]{}|]/g
    , reIsHostCtor = /^\[object .+?Constructor\]$/
    , funcProto$1 = Function.prototype
    , objectProto$2 = Object.prototype
    , funcToString$1 = funcProto$1.toString
    , hasOwnProperty$1 = objectProto$2.hasOwnProperty
    , reIsNative = RegExp("^" + funcToString$1.call(hasOwnProperty$1).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
  function baseIsNative(t) {
      return isObject(t) && !isMasked(t) && (isFunction(t) ? reIsNative : reIsHostCtor).test(toSource(t))
  }
  function getValue(t, e) {
      return null == t ? void 0 : t[e]
  }
  function getNative(t, e) {
      return baseIsNative(e = getValue(t, e)) ? e : void 0
  }
  var WeakMap = getNative(root, "WeakMap")
    , objectCreate = Object.create
    , baseCreate = function(t) {
      return isObject(t) ? objectCreate ? objectCreate(t) : (Mb.prototype = t,
      t = new Mb,
      Mb.prototype = void 0,
      t) : {}
  };
  function Mb() {}
  function apply(t, e, r) {
      switch (r.length) {
      case 0:
          return t.call(e);
      case 1:
          return t.call(e, r[0]);
      case 2:
          return t.call(e, r[0], r[1]);
      case 3:
          return t.call(e, r[0], r[1], r[2])
      }
      return t.apply(e, r)
  }
  function copyArray(t, e) {
      var r = -1
        , n = t.length;
      for (e = e || Array(n); ++r < n; )
          e[r] = t[r];
      return e
  }
  var HOT_COUNT = 800
    , HOT_SPAN = 16
    , nativeNow = Date.now;
  function shortOut(r) {
      var n = 0
        , i = 0;
      return function() {
          var t = nativeNow()
            , e = HOT_SPAN - (t - i);
          if (i = t,
          0 < e) {
              if (++n >= HOT_COUNT)
                  return arguments[0]
          } else
              n = 0;
          return r.apply(void 0, arguments)
      }
  }
  function constant(t) {
      return function() {
          return t
      }
  }
  var defineProperty = function() {
      try {
          var t = getNative(Object, "defineProperty");
          return t({}, "", {}),
          t
      } catch (t) {}
  }()
    , baseSetToString = defineProperty ? function(t, e) {
      return defineProperty(t, "toString", {
          configurable: !0,
          enumerable: !1,
          value: constant(e),
          writable: !0
      })
  }
  : identity
    , setToString = shortOut(baseSetToString);
  function arrayEach(t, e) {
      for (var r = -1, n = null == t ? 0 : t.length; ++r < n && !1 !== e(t[r], r, t); )
          ;
      return t
  }
  function baseFindIndex(t, e, r, n) {
      for (var i = t.length, a = r + (n ? 1 : -1); n ? a-- : ++a < i; )
          if (e(t[a], a, t))
              return a;
      return -1
  }
  var MAX_SAFE_INTEGER = 9007199254740991
    , reIsUint = /^(?:0|[1-9]\d*)$/;
  function isIndex(t, e) {
      var r = typeof t;
      return !!(e = null == e ? MAX_SAFE_INTEGER : e) && ("number" == r || "symbol" != r && reIsUint.test(t)) && -1 < t && t % 1 == 0 && t < e
  }
  function baseAssignValue(t, e, r) {
      "__proto__" == e && defineProperty ? defineProperty(t, e, {
          configurable: !0,
          enumerable: !0,
          value: r,
          writable: !0
      }) : t[e] = r
  }
  function eq(t, e) {
      return t === e || t != t && e != e
  }
  var objectProto$3 = Object.prototype
    , hasOwnProperty$2 = objectProto$3.hasOwnProperty;
  function assignValue(t, e, r) {
      var n = t[e];
      hasOwnProperty$2.call(t, e) && eq(n, r) && (void 0 !== r || e in t) || baseAssignValue(t, e, r)
  }
  function copyObject(t, e, r, n) {
      var i = !r;
      r = r || {};
      for (var a = -1, o = e.length; ++a < o; ) {
          var s = e[a]
            , u = n ? n(r[s], t[s], s, r, t) : void 0;
          (i ? baseAssignValue : assignValue)(r, s, u = void 0 === u ? t[s] : u)
      }
      return r
  }
  var nativeMax = Math.max;
  function overRest(a, o, s) {
      return o = nativeMax(void 0 === o ? a.length - 1 : o, 0),
      function() {
          for (var t = arguments, e = -1, r = nativeMax(t.length - o, 0), n = Array(r); ++e < r; )
              n[e] = t[o + e];
          for (var e = -1, i = Array(o + 1); ++e < o; )
              i[e] = t[e];
          return i[o] = s(n),
          apply(a, this, i)
      }
  }
  function baseRest(t, e) {
      return setToString(overRest(t, e, identity), t + "")
  }
  var MAX_SAFE_INTEGER$1 = 9007199254740991;
  function isLength(t) {
      return "number" == typeof t && -1 < t && t % 1 == 0 && t <= MAX_SAFE_INTEGER$1
  }
  function isArrayLike(t) {
      return null != t && isLength(t.length) && !isFunction(t)
  }
  function isIterateeCall(t, e, r) {
      if (isObject(r)) {
          var n = typeof e;
          return ("number" == n ? isArrayLike(r) && isIndex(e, r.length) : "string" == n && e in r) && eq(r[e], t)
      }
  }
  function createAssigner(s) {
      return baseRest(function(t, e) {
          var r = -1
            , n = e.length
            , i = 1 < n ? e[n - 1] : void 0
            , a = 2 < n ? e[2] : void 0
            , i = 3 < s.length && "function" == typeof i ? (n--,
          i) : void 0;
          for (a && isIterateeCall(e[0], e[1], a) && (i = n < 3 ? void 0 : i,
          n = 1),
          t = Object(t); ++r < n; ) {
              var o = e[r];
              o && s(t, o, r, i)
          }
          return t
      })
  }
  var objectProto$4 = Object.prototype;
  function isPrototype(t) {
      var e = t && t.constructor;
      return t === ("function" == typeof e && e.prototype || objectProto$4)
  }
  function baseTimes(t, e) {
      for (var r = -1, n = Array(t); ++r < t; )
          n[r] = e(r);
      return n
  }
  var argsTag = "[object Arguments]";
  function baseIsArguments(t) {
      return isObjectLike(t) && baseGetTag(t) == argsTag
  }
  var objectProto$5 = Object.prototype
    , hasOwnProperty$3 = objectProto$5.hasOwnProperty
    , propertyIsEnumerable = objectProto$5.propertyIsEnumerable
    , isArguments = baseIsArguments(function() {
      return arguments
  }()) ? baseIsArguments : function(t) {
      return isObjectLike(t) && hasOwnProperty$3.call(t, "callee") && !propertyIsEnumerable.call(t, "callee")
  }
  ;
  function stubFalse() {
      return !1
  }
  var freeExports = "object" == typeof exports && exports && !exports.nodeType && exports
    , freeModule = freeExports && "object" == typeof module && module && !module.nodeType && module
    , moduleExports = freeModule && freeModule.exports === freeExports
    , Buffer = moduleExports ? root.Zb : void 0
    , nativeIsBuffer = Buffer ? Buffer.isBuffer : void 0
    , isBuffer = nativeIsBuffer || stubFalse
    , argsTag$1 = "[object Arguments]"
    , arrayTag = "[object Array]"
    , boolTag = "[object Boolean]"
    , dateTag = "[object Date]"
    , errorTag = "[object Error]"
    , funcTag$1 = "[object Function]"
    , mapTag = "[object Map]"
    , numberTag = "[object Number]"
    , objectTag = "[object Object]"
    , regexpTag = "[object RegExp]"
    , setTag = "[object Set]"
    , stringTag = "[object String]"
    , weakMapTag = "[object WeakMap]"
    , arrayBufferTag = "[object ArrayBuffer]"
    , dataViewTag = "[object DataView]"
    , float32Tag = "[object Float32Array]"
    , float64Tag = "[object Float64Array]"
    , int8Tag = "[object Int8Array]"
    , int16Tag = "[object Int16Array]"
    , int32Tag = "[object Int32Array]"
    , uint8Tag = "[object Uint8Array]"
    , uint8ClampedTag = "[object Uint8ClampedArray]"
    , uint16Tag = "[object Uint16Array]"
    , uint32Tag = "[object Uint32Array]"
    , typedArrayTags = {};
  function baseIsTypedArray(t) {
      return isObjectLike(t) && isLength(t.length) && !!typedArrayTags[baseGetTag(t)]
  }
  function baseUnary(e) {
      return function(t) {
          return e(t)
      }
  }
  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = !0,
  typedArrayTags[argsTag$1] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = !1;
  var freeExports$1 = "object" == typeof exports && exports && !exports.nodeType && exports
    , freeModule$1 = freeExports$1 && "object" == typeof module && module && !module.nodeType && module
    , moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1
    , freeProcess = moduleExports$1 && freeGlobal.process
    , nodeUtil = function() {
      try {
          var t = freeModule$1 && freeModule$1.Qb && freeModule$1.Qb("util").types;
          return t || freeProcess && freeProcess.tg && freeProcess.tg("util")
      } catch (t) {}
  }()
    , nodeIsTypedArray = nodeUtil && nodeUtil.rg
    , isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray
    , objectProto$6 = Object.prototype
    , hasOwnProperty$4 = objectProto$6.hasOwnProperty;
  function arrayLikeKeys(t, e) {
      var r, n = isArray(t), i = !n && isArguments(t), a = !n && !i && isBuffer(t), o = !n && !i && !a && isTypedArray(t), s = n || i || a || o, u = s ? baseTimes(t.length, String) : [], c = u.length;
      for (r in t)
          !e && !hasOwnProperty$4.call(t, r) || s && ("length" == r || a && ("offset" == r || "parent" == r) || o && ("buffer" == r || "byteLength" == r || "byteOffset" == r) || isIndex(r, c)) || u.push(r);
      return u
  }
  function overArg(e, r) {
      return function(t) {
          return e(r(t))
      }
  }
  var nativeKeys = overArg(Object.keys, Object)
    , objectProto$7 = Object.prototype
    , hasOwnProperty$5 = objectProto$7.hasOwnProperty;
  function baseKeys(t) {
      if (!isPrototype(t))
          return nativeKeys(t);
      var e, r = [];
      for (e in Object(t))
          hasOwnProperty$5.call(t, e) && "constructor" != e && r.push(e);
      return r
  }
  function keys(t) {
      return (isArrayLike(t) ? arrayLikeKeys : baseKeys)(t)
  }
  var objectProto$8 = Object.prototype
    , hasOwnProperty$6 = objectProto$8.hasOwnProperty
    , assign = createAssigner(function(t, e) {
      if (isPrototype(e) || isArrayLike(e))
          copyObject(e, keys(e), t);
      else
          for (var r in e)
              hasOwnProperty$6.call(e, r) && assignValue(t, r, e[r])
  });
  function nativeKeysIn(t) {
      var e = [];
      if (null != t)
          for (var r in Object(t))
              e.push(r);
      return e
  }
  var objectProto$9 = Object.prototype
    , hasOwnProperty$7 = objectProto$9.hasOwnProperty;
  function baseKeysIn(t) {
      if (!isObject(t))
          return nativeKeysIn(t);
      var e, r = isPrototype(t), n = [];
      for (e in t)
          ("constructor" != e || !r && hasOwnProperty$7.call(t, e)) && n.push(e);
      return n
  }
  function keysIn(t) {
      return isArrayLike(t) ? arrayLikeKeys(t, !0) : baseKeysIn(t)
  }
  var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/
    , reIsPlainProp = /^\w*$/;
  function isKey(t, e) {
      if (!isArray(t)) {
          var r = typeof t;
          return "number" == r || "symbol" == r || "boolean" == r || null == t || isSymbol(t) || reIsPlainProp.test(t) || !reIsDeepProp.test(t) || null != e && t in Object(e)
      }
  }
  var nativeCreate = getNative(Object, "create");
  function hashClear() {
      this.ng = nativeCreate ? nativeCreate(null) : {},
      this.size = 0
  }
  function hashDelete(t) {
      return t = this.has(t) && delete this.ng[t],
      this.size -= t ? 1 : 0,
      t
  }
  var HASH_UNDEFINED = "__lodash_hash_undefined__"
    , objectProto$a = Object.prototype
    , hasOwnProperty$8 = objectProto$a.hasOwnProperty;
  function hashGet(t) {
      var e = this.ng;
      if (nativeCreate) {
          var r = e[t];
          return r === HASH_UNDEFINED ? void 0 : r
      }
      return hasOwnProperty$8.call(e, t) ? e[t] : void 0
  }
  var objectProto$b = Object.prototype
    , hasOwnProperty$9 = objectProto$b.hasOwnProperty;
  function hashHas(t) {
      var e = this.ng;
      return nativeCreate ? void 0 !== e[t] : hasOwnProperty$9.call(e, t)
  }
  var HASH_UNDEFINED$1 = "__lodash_hash_undefined__";
  function hashSet(t, e) {
      var r = this.ng;
      return this.size += this.has(t) ? 0 : 1,
      r[t] = nativeCreate && void 0 === e ? HASH_UNDEFINED$1 : e,
      this
  }
  function Hash(t) {
      var e = -1
        , r = null == t ? 0 : t.length;
      for (this.clear(); ++e < r; ) {
          var n = t[e];
          this.set(n[0], n[1])
      }
  }
  function listCacheClear() {
      this.ng = [],
      this.size = 0
  }
  function assocIndexOf(t, e) {
      for (var r = t.length; r--; )
          if (eq(t[r][0], e))
              return r;
      return -1
  }
  Hash.prototype.clear = hashClear,
  Hash.prototype.delete = hashDelete,
  Hash.prototype.get = hashGet,
  Hash.prototype.has = hashHas,
  Hash.prototype.set = hashSet;
  var arrayProto = Array.prototype
    , splice = arrayProto.splice;
  function listCacheDelete(t) {
      var e = this.ng;
      return !((t = assocIndexOf(e, t)) < 0 || (t == e.length - 1 ? e.pop() : splice.call(e, t, 1),
      --this.size,
      0))
  }
  function listCacheGet(t) {
      var e = this.ng;
      return (t = assocIndexOf(e, t)) < 0 ? void 0 : e[t][1]
  }
  function listCacheHas(t) {
      return -1 < assocIndexOf(this.ng, t)
  }
  function listCacheSet(t, e) {
      var r = this.ng
        , n = assocIndexOf(r, t);
      return n < 0 ? (++this.size,
      r.push([t, e])) : r[n][1] = e,
      this
  }
  function ListCache(t) {
      var e = -1
        , r = null == t ? 0 : t.length;
      for (this.clear(); ++e < r; ) {
          var n = t[e];
          this.set(n[0], n[1])
      }
  }
  ListCache.prototype.clear = listCacheClear,
  ListCache.prototype.delete = listCacheDelete,
  ListCache.prototype.get = listCacheGet,
  ListCache.prototype.has = listCacheHas,
  ListCache.prototype.set = listCacheSet;
  var Map = getNative(root, "Map");
  function mapCacheClear() {
      this.size = 0,
      this.ng = {
          hash: new Hash,
          map: new (Map || ListCache),
          string: new Hash
      }
  }
  function isKeyable(t) {
      var e = typeof t;
      return "string" == e || "number" == e || "symbol" == e || "boolean" == e ? "__proto__" !== t : null === t
  }
  function getMapData(t, e) {
      return t = t.ng,
      isKeyable(e) ? t["string" == typeof e ? "string" : "hash"] : t.map
  }
  function mapCacheDelete(t) {
      return t = getMapData(this, t).delete(t),
      this.size -= t ? 1 : 0,
      t
  }
  function mapCacheGet(t) {
      return getMapData(this, t).get(t)
  }
  function mapCacheHas(t) {
      return getMapData(this, t).has(t)
  }
  function mapCacheSet(t, e) {
      var r = getMapData(this, t)
        , n = r.size;
      return r.set(t, e),
      this.size += r.size == n ? 0 : 1,
      this
  }
  function MapCache(t) {
      var e = -1
        , r = null == t ? 0 : t.length;
      for (this.clear(); ++e < r; ) {
          var n = t[e];
          this.set(n[0], n[1])
      }
  }
  MapCache.prototype.clear = mapCacheClear,
  MapCache.prototype.delete = mapCacheDelete,
  MapCache.prototype.get = mapCacheGet,
  MapCache.prototype.has = mapCacheHas,
  MapCache.prototype.set = mapCacheSet;
  var FUNC_ERROR_TEXT = "Expected a function";
  function memoize(n, i) {
      if ("function" != typeof n || null != i && "function" != typeof i)
          throw new TypeError(FUNC_ERROR_TEXT);
      function a() {
          var t = arguments
            , e = i ? i.apply(this, t) : t[0]
            , r = a.cache;
          return r.has(e) ? r.get(e) : (t = n.apply(this, t),
          a.cache = r.set(e, t) || r,
          t)
      }
      return a.cache = new (memoize.Cache || MapCache),
      a
  }
  memoize.Cache = MapCache;
  var MAX_MEMOIZE_SIZE = 500;
  function memoizeCapped(t) {
      var e = (t = memoize(t, function(t) {
          return e.size === MAX_MEMOIZE_SIZE && e.clear(),
          t
      })).cache;
      return t
  }
  var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g
    , reEscapeChar = /\\(\\)?/g
    , stringToPath = memoizeCapped(function(t) {
      var i = [];
      return 46 === t.charCodeAt(0) && i.push(""),
      t.replace(rePropName, function(t, e, r, n) {
          i.push(r ? n.replace(reEscapeChar, "$1") : e || t)
      }),
      i
  });
  function toString(t) {
      return null == t ? "" : baseToString(t)
  }
  function castPath(t, e) {
      return isArray(t) ? t : isKey(t, e) ? [t] : stringToPath(toString(t))
  }
  var INFINITY$2 = 1 / 0;
  function toKey(t) {
      if ("string" == typeof t || isSymbol(t))
          return t;
      var e = t + "";
      return "0" == e && 1 / t == -INFINITY$2 ? "-0" : e
  }
  function baseGet(t, e) {
      for (var r = 0, n = (e = castPath(e, t)).length; null != t && r < n; )
          t = t[toKey(e[r++])];
      return r && r == n ? t : void 0
  }
  function get(t, e, r) {
      return void 0 === (e = null == t ? void 0 : baseGet(t, e)) ? r : e
  }
  function arrayPush(t, e) {
      for (var r = -1, n = e.length, i = t.length; ++r < n; )
          t[i + r] = e[r];
      return t
  }
  var getPrototype = overArg(Object.getPrototypeOf, Object);
  function stackClear() {
      this.ng = new ListCache,
      this.size = 0
  }
  function stackDelete(t) {
      var e = this.ng
        , t = e.delete(t);
      return this.size = e.size,
      t
  }
  function stackGet(t) {
      return this.ng.get(t)
  }
  function stackHas(t) {
      return this.ng.has(t)
  }
  var LARGE_ARRAY_SIZE = 200;
  function stackSet(t, e) {
      var r = this.ng;
      if (r instanceof ListCache) {
          var n = r.ng;
          if (!Map || n.length < LARGE_ARRAY_SIZE - 1)
              return n.push([t, e]),
              this.size = ++r.size,
              this;
          r = this.ng = new MapCache(n)
      }
      return r.set(t, e),
      this.size = r.size,
      this
  }
  function Stack(t) {
      t = this.ng = new ListCache(t),
      this.size = t.size
  }
  function baseAssign(t, e) {
      return t && copyObject(e, keys(e), t)
  }
  function baseAssignIn(t, e) {
      return t && copyObject(e, keysIn(e), t)
  }
  Stack.prototype.clear = stackClear,
  Stack.prototype.delete = stackDelete,
  Stack.prototype.get = stackGet,
  Stack.prototype.has = stackHas,
  Stack.prototype.set = stackSet;
  var freeExports$2 = "object" == typeof exports && exports && !exports.nodeType && exports
    , freeModule$2 = freeExports$2 && "object" == typeof module && module && !module.nodeType && module
    , moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2
    , Buffer$1 = moduleExports$2 ? root.Zb : void 0
    , allocUnsafe = Buffer$1 ? Buffer$1.ig : void 0;
  function cloneBuffer(t, e) {
      return e ? t.slice() : (e = t.length,
      e = allocUnsafe ? allocUnsafe(e) : new t.constructor(e),
      t.eg(e),
      e)
  }
  function arrayFilter(t, e) {
      for (var r = -1, n = null == t ? 0 : t.length, i = 0, a = []; ++r < n; ) {
          var o = t[r];
          e(o, r, t) && (a[i++] = o)
      }
      return a
  }
  function stubArray() {
      return []
  }
  var objectProto$c = Object.prototype
    , propertyIsEnumerable$1 = objectProto$c.propertyIsEnumerable
    , nativeGetSymbols = Object.getOwnPropertySymbols
    , getSymbols = nativeGetSymbols ? function(e) {
      return null == e ? [] : (e = Object(e),
      arrayFilter(nativeGetSymbols(e), function(t) {
          return propertyIsEnumerable$1.call(e, t)
      }))
  }
  : stubArray;
  function copySymbols(t, e) {
      return copyObject(t, getSymbols(t), e)
  }
  var nativeGetSymbols$1 = Object.getOwnPropertySymbols
    , getSymbolsIn = nativeGetSymbols$1 ? function(t) {
      for (var e = []; t; )
          arrayPush(e, getSymbols(t)),
          t = getPrototype(t);
      return e
  }
  : stubArray;
  function copySymbolsIn(t, e) {
      return copyObject(t, getSymbolsIn(t), e)
  }
  function baseGetAllKeys(t, e, r) {
      return e = e(t),
      isArray(t) ? e : arrayPush(e, r(t))
  }
  function getAllKeys(t) {
      return baseGetAllKeys(t, keys, getSymbols)
  }
  function getAllKeysIn(t) {
      return baseGetAllKeys(t, keysIn, getSymbolsIn)
  }
  var DataView = getNative(root, "DataView")
    , Promise$1 = getNative(root, "Promise")
    , Set = getNative(root, "Set")
    , mapTag$1 = "[object Map]"
    , objectTag$1 = "[object Object]"
    , promiseTag = "[object Promise]"
    , setTag$1 = "[object Set]"
    , weakMapTag$1 = "[object WeakMap]"
    , dataViewTag$1 = "[object DataView]"
    , dataViewCtorString = toSource(DataView)
    , mapCtorString = toSource(Map)
    , promiseCtorString = toSource(Promise$1)
    , setCtorString = toSource(Set)
    , weakMapCtorString = toSource(WeakMap)
    , getTag = baseGetTag;
  (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag$1 || Map && getTag(new Map) != mapTag$1 || Promise$1 && getTag(Promise$1.resolve()) != promiseTag || Set && getTag(new Set) != setTag$1 || WeakMap && getTag(new WeakMap) != weakMapTag$1) && (getTag = function(t) {
      var e = baseGetTag(t);
      if (t = (t = e == objectTag$1 ? t.constructor : void 0) ? toSource(t) : "")
          switch (t) {
          case dataViewCtorString:
              return dataViewTag$1;
          case mapCtorString:
              return mapTag$1;
          case promiseCtorString:
              return promiseTag;
          case setCtorString:
              return setTag$1;
          case weakMapCtorString:
              return weakMapTag$1
          }
      return e
  }
  );
  var getTag$1 = getTag
    , objectProto$d = Object.prototype
    , hasOwnProperty$a = objectProto$d.hasOwnProperty;
  function initCloneArray(t) {
      var e = t.length
        , r = new t.constructor(e);
      return e && "string" == typeof t[0] && hasOwnProperty$a.call(t, "index") && (r.index = t.index,
      r.input = t.input),
      r
  }
  var Uint8Array$1 = root.Uint8Array;
  function cloneArrayBuffer(t) {
      var e = new t.constructor(t.byteLength);
      return new Uint8Array$1(e).set(new Uint8Array$1(t)),
      e
  }
  function cloneDataView(t, e) {
      return e = e ? cloneArrayBuffer(t.buffer) : t.buffer,
      new t.constructor(e,t.byteOffset,t.byteLength)
  }
  var reFlags = /\w*$/;
  function cloneRegExp(t) {
      var e = new t.constructor(t.source,reFlags.exec(t));
      return e.lastIndex = t.lastIndex,
      e
  }
  var symbolProto$1 = Symbol ? Symbol.prototype : void 0
    , symbolValueOf = symbolProto$1 ? symbolProto$1.valueOf : void 0;
  function cloneSymbol(t) {
      return symbolValueOf ? Object(symbolValueOf.call(t)) : {}
  }
  function cloneTypedArray(t, e) {
      return e = e ? cloneArrayBuffer(t.buffer) : t.buffer,
      new t.constructor(e,t.byteOffset,t.length)
  }
  var boolTag$1 = "[object Boolean]"
    , dateTag$1 = "[object Date]"
    , mapTag$2 = "[object Map]"
    , numberTag$1 = "[object Number]"
    , regexpTag$1 = "[object RegExp]"
    , setTag$2 = "[object Set]"
    , stringTag$1 = "[object String]"
    , symbolTag$1 = "[object Symbol]"
    , arrayBufferTag$1 = "[object ArrayBuffer]"
    , dataViewTag$2 = "[object DataView]"
    , float32Tag$1 = "[object Float32Array]"
    , float64Tag$1 = "[object Float64Array]"
    , int8Tag$1 = "[object Int8Array]"
    , int16Tag$1 = "[object Int16Array]"
    , int32Tag$1 = "[object Int32Array]"
    , uint8Tag$1 = "[object Uint8Array]"
    , uint8ClampedTag$1 = "[object Uint8ClampedArray]"
    , uint16Tag$1 = "[object Uint16Array]"
    , uint32Tag$1 = "[object Uint32Array]";
  function initCloneByTag(t, e, r) {
      var n = t.constructor;
      switch (e) {
      case arrayBufferTag$1:
          return cloneArrayBuffer(t);
      case boolTag$1:
      case dateTag$1:
          return new n(+t);
      case dataViewTag$2:
          return cloneDataView(t, r);
      case float32Tag$1:
      case float64Tag$1:
      case int8Tag$1:
      case int16Tag$1:
      case int32Tag$1:
      case uint8Tag$1:
      case uint8ClampedTag$1:
      case uint16Tag$1:
      case uint32Tag$1:
          return cloneTypedArray(t, r);
      case mapTag$2:
          return new n;
      case numberTag$1:
      case stringTag$1:
          return new n(t);
      case regexpTag$1:
          return cloneRegExp(t);
      case setTag$2:
          return new n;
      case symbolTag$1:
          return cloneSymbol(t)
      }
  }
  function initCloneObject(t) {
      return "function" != typeof t.constructor || isPrototype(t) ? {} : baseCreate(getPrototype(t))
  }
  var mapTag$3 = "[object Map]";
  function baseIsMap(t) {
      return isObjectLike(t) && getTag$1(t) == mapTag$3
  }
  var nodeIsMap = nodeUtil && nodeUtil.isMap
    , isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap
    , setTag$3 = "[object Set]";
  function baseIsSet(t) {
      return isObjectLike(t) && getTag$1(t) == setTag$3
  }
  var nodeIsSet = nodeUtil && nodeUtil.og
    , isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet
    , CLONE_DEEP_FLAG = 1
    , CLONE_FLAT_FLAG = 2
    , CLONE_SYMBOLS_FLAG = 4
    , argsTag$2 = "[object Arguments]"
    , arrayTag$1 = "[object Array]"
    , boolTag$2 = "[object Boolean]"
    , dateTag$2 = "[object Date]"
    , errorTag$1 = "[object Error]"
    , funcTag$2 = "[object Function]"
    , genTag$1 = "[object GeneratorFunction]"
    , mapTag$4 = "[object Map]"
    , numberTag$2 = "[object Number]"
    , objectTag$2 = "[object Object]"
    , regexpTag$2 = "[object RegExp]"
    , setTag$4 = "[object Set]"
    , stringTag$2 = "[object String]"
    , symbolTag$2 = "[object Symbol]"
    , weakMapTag$2 = "[object WeakMap]"
    , arrayBufferTag$2 = "[object ArrayBuffer]"
    , dataViewTag$3 = "[object DataView]"
    , float32Tag$2 = "[object Float32Array]"
    , float64Tag$2 = "[object Float64Array]"
    , int8Tag$2 = "[object Int8Array]"
    , int16Tag$2 = "[object Int16Array]"
    , int32Tag$2 = "[object Int32Array]"
    , uint8Tag$2 = "[object Uint8Array]"
    , uint8ClampedTag$2 = "[object Uint8ClampedArray]"
    , uint16Tag$2 = "[object Uint16Array]"
    , uint32Tag$2 = "[object Uint32Array]"
    , cloneableTags = {};
  function baseClone(r, n, i, t, e, a) {
      var o, s = n & CLONE_DEEP_FLAG, u = n & CLONE_FLAT_FLAG, c = n & CLONE_SYMBOLS_FLAG;
      if (void 0 !== (o = i ? e ? i(r, t, e, a) : i(r) : o))
          return o;
      if (!isObject(r))
          return r;
      var f = isArray(r);
      if (f) {
          if (o = initCloneArray(r),
          !s)
              return copyArray(r, o)
      } else {
          var l = getTag$1(r)
            , t = l == funcTag$2 || l == genTag$1;
          if (isBuffer(r))
              return cloneBuffer(r, s);
          if (l == objectTag$2 || l == argsTag$2 || t && !e) {
              if (o = u || t ? {} : initCloneObject(r),
              !s)
                  return u ? copySymbolsIn(r, baseAssignIn(o, r)) : copySymbols(r, baseAssign(o, r))
          } else {
              if (!cloneableTags[l])
                  return e ? r : {};
              o = initCloneByTag(r, l, s)
          }
      }
      if (s = (a = a || new Stack).get(r))
          return s;
      a.set(r, o),
      isSet(r) ? r.forEach(function(t) {
          o.add(baseClone(t, n, i, t, r, a))
      }) : isMap(r) && r.forEach(function(t, e) {
          o.set(e, baseClone(t, n, i, e, r, a))
      });
      var h = f ? void 0 : (c ? u ? getAllKeysIn : getAllKeys : u ? keysIn : keys)(r);
      return arrayEach(h || r, function(t, e) {
          h && (t = r[e = t]),
          assignValue(o, e, baseClone(t, n, i, e, r, a))
      }),
      o
  }
  cloneableTags[argsTag$2] = cloneableTags[arrayTag$1] = cloneableTags[arrayBufferTag$2] = cloneableTags[dataViewTag$3] = cloneableTags[boolTag$2] = cloneableTags[dateTag$2] = cloneableTags[float32Tag$2] = cloneableTags[float64Tag$2] = cloneableTags[int8Tag$2] = cloneableTags[int16Tag$2] = cloneableTags[int32Tag$2] = cloneableTags[mapTag$4] = cloneableTags[numberTag$2] = cloneableTags[objectTag$2] = cloneableTags[regexpTag$2] = cloneableTags[setTag$4] = cloneableTags[stringTag$2] = cloneableTags[symbolTag$2] = cloneableTags[uint8Tag$2] = cloneableTags[uint8ClampedTag$2] = cloneableTags[uint16Tag$2] = cloneableTags[uint32Tag$2] = !0,
  cloneableTags[errorTag$1] = cloneableTags[funcTag$2] = cloneableTags[weakMapTag$2] = !1;
  var CLONE_SYMBOLS_FLAG$1 = 4;
  function clone(t) {
      return baseClone(t, CLONE_SYMBOLS_FLAG$1)
  }
  var CLONE_DEEP_FLAG$1 = 1
    , CLONE_SYMBOLS_FLAG$2 = 4;
  function cloneDeep(t) {
      return baseClone(t, CLONE_DEEP_FLAG$1 | CLONE_SYMBOLS_FLAG$2)
  }
  var HASH_UNDEFINED$2 = "__lodash_hash_undefined__";
  function setCacheAdd(t) {
      return this.ng.set(t, HASH_UNDEFINED$2),
      this
  }
  function setCacheHas(t) {
      return this.ng.has(t)
  }
  function SetCache(t) {
      var e = -1
        , r = null == t ? 0 : t.length;
      for (this.ng = new MapCache; ++e < r; )
          this.add(t[e])
  }
  function arraySome(t, e) {
      for (var r = -1, n = null == t ? 0 : t.length; ++r < n; )
          if (e(t[r], r, t))
              return !0;
      return !1
  }
  function cacheHas(t, e) {
      return t.has(e)
  }
  SetCache.prototype.add = SetCache.prototype.push = setCacheAdd,
  SetCache.prototype.has = setCacheHas;
  var COMPARE_PARTIAL_FLAG = 1
    , COMPARE_UNORDERED_FLAG = 2;
  function equalArrays(t, e, r, n, i, a) {
      var o = r & COMPARE_PARTIAL_FLAG
        , s = t.length;
      if (s != (u = e.length) && !(o && s < u))
          return !1;
      var c = a.get(t)
        , u = a.get(e);
      if (c && u)
          return c == e && u == t;
      var f = -1
        , l = !0
        , h = r & COMPARE_UNORDERED_FLAG ? new SetCache : void 0;
      for (a.set(t, e),
      a.set(e, t); ++f < s; ) {
          var d, v = t[f], g = e[f];
          if (void 0 !== (d = n ? o ? n(g, v, f, e, t, a) : n(v, g, f, t, e, a) : d)) {
              if (d)
                  continue;
              l = !1;
              break
          }
          if (h) {
              if (!arraySome(e, function(t, e) {
                  if (!cacheHas(h, e) && (v === t || i(v, t, r, n, a)))
                      return h.push(e)
              })) {
                  l = !1;
                  break
              }
          } else if (v !== g && !i(v, g, r, n, a)) {
              l = !1;
              break
          }
      }
      return a.delete(t),
      a.delete(e),
      l
  }
  function mapToArray(t) {
      var r = -1
        , n = Array(t.size);
      return t.forEach(function(t, e) {
          n[++r] = [e, t]
      }),
      n
  }
  function setToArray(t) {
      var e = -1
        , r = Array(t.size);
      return t.forEach(function(t) {
          r[++e] = t
      }),
      r
  }
  var COMPARE_PARTIAL_FLAG$1 = 1
    , COMPARE_UNORDERED_FLAG$1 = 2
    , boolTag$3 = "[object Boolean]"
    , dateTag$3 = "[object Date]"
    , errorTag$2 = "[object Error]"
    , mapTag$5 = "[object Map]"
    , numberTag$3 = "[object Number]"
    , regexpTag$3 = "[object RegExp]"
    , setTag$5 = "[object Set]"
    , stringTag$3 = "[object String]"
    , symbolTag$3 = "[object Symbol]"
    , arrayBufferTag$3 = "[object ArrayBuffer]"
    , dataViewTag$4 = "[object DataView]"
    , symbolProto$2 = Symbol ? Symbol.prototype : void 0
    , symbolValueOf$1 = symbolProto$2 ? symbolProto$2.valueOf : void 0;
  function equalByTag(t, e, r, n, i, a, o) {
      switch (r) {
      case dataViewTag$4:
          if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset)
              return !1;
          t = t.buffer,
          e = e.buffer;
      case arrayBufferTag$3:
          return !(t.byteLength != e.byteLength || !a(new Uint8Array$1(t), new Uint8Array$1(e)));
      case boolTag$3:
      case dateTag$3:
      case numberTag$3:
          return eq(+t, +e);
      case errorTag$2:
          return t.name == e.name && t.message == e.message;
      case regexpTag$3:
      case stringTag$3:
          return t == e + "";
      case mapTag$5:
          var s = mapToArray;
      case setTag$5:
          if (s = s || setToArray,
          t.size != e.size && !(n & COMPARE_PARTIAL_FLAG$1))
              return !1;
          var u = o.get(t);
          return u ? u == e : (n |= COMPARE_UNORDERED_FLAG$1,
          o.set(t, e),
          s = equalArrays(s(t), s(e), n, i, a, o),
          o.delete(t),
          s);
      case symbolTag$3:
          if (symbolValueOf$1)
              return symbolValueOf$1.call(t) == symbolValueOf$1.call(e)
      }
      return !1
  }
  var COMPARE_PARTIAL_FLAG$2 = 1
    , objectProto$e = Object.prototype
    , hasOwnProperty$b = objectProto$e.hasOwnProperty;
  function equalObjects(t, e, r, n, i, a) {
      var o = r & COMPARE_PARTIAL_FLAG$2
        , s = getAllKeys(t)
        , u = s.length;
      if (u != getAllKeys(e).length && !o)
          return !1;
      for (var c = u; c--; ) {
          var f = s[c];
          if (!(o ? f in e : hasOwnProperty$b.call(e, f)))
              return !1
      }
      var l = a.get(t)
        , h = a.get(e);
      if (l && h)
          return l == e && h == t;
      var d = !0;
      a.set(t, e),
      a.set(e, t);
      for (var v = o; ++c < u; ) {
          var g, b = t[f = s[c]], p = e[f];
          if (!(void 0 === (g = n ? o ? n(p, b, f, e, t, a) : n(b, p, f, t, e, a) : g) ? b === p || i(b, p, r, n, a) : g)) {
              d = !1;
              break
          }
          v = v || "constructor" == f
      }
      return !d || v || (l = t.constructor) != (h = e.constructor) && "constructor"in t && "constructor"in e && !("function" == typeof l && l instanceof l && "function" == typeof h && h instanceof h) && (d = !1),
      a.delete(t),
      a.delete(e),
      d
  }
  var COMPARE_PARTIAL_FLAG$3 = 1
    , argsTag$3 = "[object Arguments]"
    , arrayTag$2 = "[object Array]"
    , objectTag$3 = "[object Object]"
    , objectProto$f = Object.prototype
    , hasOwnProperty$c = objectProto$f.hasOwnProperty;
  function baseIsEqualDeep(t, e, r, n, i, a) {
      var o = isArray(t)
        , s = isArray(e)
        , u = o ? arrayTag$2 : getTag$1(t)
        , c = s ? arrayTag$2 : getTag$1(e)
        , f = (u = u == argsTag$3 ? objectTag$3 : u) == objectTag$3
        , s = (c = c == argsTag$3 ? objectTag$3 : c) == objectTag$3;
      if ((c = u == c) && isBuffer(t)) {
          if (!isBuffer(e))
              return !1;
          f = !(o = !0)
      }
      return c && !f ? (a = a || new Stack,
      o || isTypedArray(t) ? equalArrays(t, e, r, n, i, a) : equalByTag(t, e, u, r, n, i, a)) : r & COMPARE_PARTIAL_FLAG$3 || (f = f && hasOwnProperty$c.call(t, "__wrapped__"),
      s = s && hasOwnProperty$c.call(e, "__wrapped__"),
      !f && !s) ? !!c && equalObjects(t, e, r, n, i, a = a || new Stack) : i(f ? t.value() : t, s ? e.value() : e, r, n, a = a || new Stack)
  }
  function baseIsEqual(t, e, r, n, i) {
      return t === e || (null == t || null == e || !isObjectLike(t) && !isObjectLike(e) ? t != t && e != e : baseIsEqualDeep(t, e, r, n, baseIsEqual, i))
  }
  var COMPARE_PARTIAL_FLAG$4 = 1
    , COMPARE_UNORDERED_FLAG$2 = 2;
  function baseIsMatch(t, e, r, n) {
      var i = r.length
        , a = i
        , o = !n;
      if (null == t)
          return !a;
      for (t = Object(t); i--; ) {
          var s = r[i];
          if (o && s[2] ? s[1] !== t[s[0]] : !(s[0]in t))
              return !1
      }
      for (; ++i < a; ) {
          var u = (s = r[i])[0]
            , c = t[u]
            , f = s[1];
          if (o && s[2]) {
              if (void 0 === c && !(u in t))
                  return !1
          } else {
              var l, h = new Stack;
              if (!(void 0 === (l = n ? n(c, f, u, t, e, h) : l) ? baseIsEqual(f, c, COMPARE_PARTIAL_FLAG$4 | COMPARE_UNORDERED_FLAG$2, n, h) : l))
                  return !1
          }
      }
      return !0
  }
  function isStrictComparable(t) {
      return t == t && !isObject(t)
  }
  function getMatchData(t) {
      for (var e = keys(t), r = e.length; r--; ) {
          var n = e[r]
            , i = t[n];
          e[r] = [n, i, isStrictComparable(i)]
      }
      return e
  }
  function matchesStrictComparable(e, r) {
      return function(t) {
          return null != t && t[e] === r && (void 0 !== r || e in Object(t))
      }
  }
  function baseMatches(e) {
      var r = getMatchData(e);
      return 1 == r.length && r[0][2] ? matchesStrictComparable(r[0][0], r[0][1]) : function(t) {
          return t === e || baseIsMatch(t, e, r)
      }
  }
  function baseHasIn(t, e) {
      return null != t && e in Object(t)
  }
  function hasPath(t, e, r) {
      for (var n = -1, i = (e = castPath(e, t)).length, a = !1; ++n < i; ) {
          var o = toKey(e[n]);
          if (!(a = null != t && r(t, o)))
              break;
          t = t[o]
      }
      return a || ++n != i ? a : !!(i = null == t ? 0 : t.length) && isLength(i) && isIndex(o, i) && (isArray(t) || isArguments(t))
  }
  function hasIn(t, e) {
      return null != t && hasPath(t, e, baseHasIn)
  }
  var COMPARE_PARTIAL_FLAG$5 = 1
    , COMPARE_UNORDERED_FLAG$3 = 2;
  function baseMatchesProperty(r, n) {
      return isKey(r) && isStrictComparable(n) ? matchesStrictComparable(toKey(r), n) : function(t) {
          var e = get(t, r);
          return void 0 === e && e === n ? hasIn(t, r) : baseIsEqual(n, e, COMPARE_PARTIAL_FLAG$5 | COMPARE_UNORDERED_FLAG$3)
      }
  }
  function baseProperty(e) {
      return function(t) {
          return null == t ? void 0 : t[e]
      }
  }
  function basePropertyDeep(e) {
      return function(t) {
          return baseGet(t, e)
      }
  }
  function property(t) {
      return isKey(t) ? baseProperty(toKey(t)) : basePropertyDeep(t)
  }
  function baseIteratee(t) {
      return "function" == typeof t ? t : null == t ? identity : "object" == typeof t ? isArray(t) ? baseMatchesProperty(t[0], t[1]) : baseMatches(t) : property(t)
  }
  function createBaseFor(u) {
      return function(t, e, r) {
          for (var n = -1, i = Object(t), a = r(t), o = a.length; o--; ) {
              var s = a[u ? o : ++n];
              if (!1 === e(i[s], s, i))
                  break
          }
          return t
      }
  }
  var baseFor = createBaseFor();
  function baseForOwn(t, e) {
      return t && baseFor(t, e, keys)
  }
  function createBaseEach(a, o) {
      return function(t, e) {
          if (null == t)
              return t;
          if (!isArrayLike(t))
              return a(t, e);
          for (var r = t.length, n = o ? r : -1, i = Object(t); (o ? n-- : ++n < r) && !1 !== e(i[n], n, i); )
              ;
          return t
      }
  }
  var baseEach = createBaseEach(baseForOwn);
  function castFunction(t) {
      return "function" == typeof t ? t : identity
  }
  function forEach(t, e) {
      return (isArray(t) ? arrayEach : baseEach)(t, castFunction(e))
  }
  function arrayEvery(t, e) {
      for (var r = -1, n = null == t ? 0 : t.length; ++r < n; )
          if (!e(t[r], r, t))
              return !1;
      return !0
  }
  function baseEvery(t, n) {
      var i = !0;
      return baseEach(t, function(t, e, r) {
          return i = !!n(t, e, r)
      }),
      i
  }
  function every(t, e, r) {
      return (isArray(t) ? arrayEvery : baseEvery)(t, baseIteratee(e = r && isIterateeCall(t, e, r) ? void 0 : e))
  }
  function baseFilter(t, n) {
      var i = [];
      return baseEach(t, function(t, e, r) {
          n(t, e, r) && i.push(t)
      }),
      i
  }
  function filter(t, e) {
      return (isArray(t) ? arrayFilter : baseFilter)(t, baseIteratee(e))
  }
  function createFind(a) {
      return function(t, e, r) {
          var n, i = Object(t);
          return isArrayLike(t) || (n = baseIteratee(e),
          t = keys(t),
          e = function(t) {
              return n(i[t], t, i)
          }
          ),
          -1 < (r = a(t, e, r)) ? i[n ? t[r] : r] : void 0
      }
  }
  var nativeMax$1 = Math.max;
  function findIndex(t, e, r) {
      var n = null == t ? 0 : t.length;
      return n ? ((r = null == r ? 0 : toInteger(r)) < 0 && (r = nativeMax$1(n + r, 0)),
      baseFindIndex(t, baseIteratee(e), r)) : -1
  }
  var find = createFind(findIndex);
  function baseMap(t, n) {
      var i = -1
        , a = isArrayLike(t) ? Array(t.length) : [];
      return baseEach(t, function(t, e, r) {
          a[++i] = n(t, e, r)
      }),
      a
  }
  function map(t, e) {
      return (isArray(t) ? arrayMap : baseMap)(t, baseIteratee(e))
  }
  function forIn(t, e) {
      return null == t ? t : baseFor(t, castFunction(e), keysIn)
  }
  var mapTag$6 = "[object Map]"
    , setTag$6 = "[object Set]"
    , objectProto$g = Object.prototype
    , hasOwnProperty$d = objectProto$g.hasOwnProperty;
  function isEmpty(t) {
      if (null == t)
          return !0;
      if (isArrayLike(t) && (isArray(t) || "string" == typeof t || "function" == typeof t.splice || isBuffer(t) || isTypedArray(t) || isArguments(t)))
          return !t.length;
      var e, r = getTag$1(t);
      if (r == mapTag$6 || r == setTag$6)
          return !t.size;
      if (isPrototype(t))
          return !baseKeys(t).length;
      for (e in t)
          if (hasOwnProperty$d.call(t, e))
              return !1;
      return !0
  }
  function isEqual(t, e) {
      return baseIsEqual(t, e)
  }
  function isUndefined(t) {
      return void 0 === t
  }
  function baseSome(t, n) {
      var i;
      return baseEach(t, function(t, e, r) {
          return !(i = n(t, e, r))
      }),
      !!i
  }
  function some(t, e, r) {
      return (isArray(t) ? arraySome : baseSome)(t, baseIteratee(e = r && isIterateeCall(t, e, r) ? void 0 : e))
  }
  var projections = {}
    , Projection = (sg.prototype.moveWithPixel = function(t, e, r) {
      var n = this.getResolution(r)
        , r = e[0] * n
        , n = e[1] * n
        , t = this.project(t[0], t[1]);
      return this.unproject(t[0] + r, t[1] + n)
  }
  ,
  sg.prototype.moveWithPos = function(t, e) {
      return e = [(t = this.project(t[0], t[1]))[0] + e[0], t[1] + e[1]],
      this.unproject(e[0], e[1])
  }
  ,
  sg);
  function sg(t, e, r, n) {
      this.project = e,
      this.unproject = r,
      this.getResolution = n,
      projections[t] = this
  }
  var ProjectionManager = {
      getProjection: function(t) {
          return projections[t]
      }
  }, LngLat = new Projection("EPSG:4326",function(t, e) {
      return [t, e]
  }
  ,function(t, e) {
      return [t, e]
  }
  ,function(t) {
      return .703125 / Math.pow(2, t)
  }
  ), SphericalMercator = (Rg = Math.PI / 180,
  Sg = 180 / Math.PI,
  Tg = 6378137,
  new Projection("EPSG:3857",function(t, e) {
      var r = 85.0511287798;
      return e = Math.max(Math.min(r, e), -r),
      t *= Rg,
      e *= Rg,
      e = Math.log(Math.tan(Math.PI / 4 + e / 2)),
      [t * Tg, e * Tg]
  }
  ,function(t, e) {
      return [t / Tg * Sg, (2 * Math.atan(Math.exp(e / Tg)) - Math.PI / 2) * Sg]
  }
  ,function(t) {
      return 156543.03392804097 / Math.pow(2, t)
  }
  )), Rg, Sg, Tg, LCS = (g6.prototype.setMap = function(t) {
      this.map = t
  }
  ,
  g6.prototype.getSize = function() {
      return [this.lg, this.dg]
  }
  ,
  g6.prototype.getNum = function() {
      return [this.cg, this.vg]
  }
  ,
  g6.prototype.getLocalByLnglat = function(t) {
      var e, t = (e = ProjectionManager.getProjection("EPSG:3857")).project.apply(e, t);
      return this.getLocalByCoord(t)
  }
  ,
  g6.prototype.getLocalByCoord = function(t) {
      var e = Math.floor(t[0] / this.lg)
        , r = Math.floor(t[1] / this.dg)
        , n = this.getLocalCenterByXY(e, r);
      return {
          Sa: [t[0] - n.center[0], t[1] - n.center[1]],
          x: e,
          y: r,
          center: n.center,
          Ro: n.Ro
      }
  }
  ,
  g6.prototype.getLocalCenterByXY = function(t, e) {
      var r = {
          x: t,
          y: e,
          center: [0, 0],
          Ro: [0, 0, 0, 0]
      };
      return r.center = [(t + .5) * this.lg, (e + .5) * this.dg],
      r.Ro = [t * this.lg, e * this.dg, (t + 1) * this.lg, (e + 1) * this.dg],
      r
  }
  ,
  g6.prototype.getDeltaCoord = function(t) {
      var e = this.getLocalByCoord(t);
      return [t[0] - e.center[0], t[1] - e.center[1]]
  }
  ,
  g6);
  function g6() {
      this.hg = [-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244],
      this.cg = 128,
      this.vg = 128,
      this.lg = (this.hg[2] - this.hg[0]) / this.cg,
      this.dg = (this.hg[3] - this.hg[1]) / this.vg
  }
  var lcs = new LCS, E4326 = ProjectionManager.getProjection("EPSG:4326"), E3857 = ProjectionManager.getProjection("EPSG:3857"), HALF_WORLD_SIZE = 20037508.342789244, LngLat$1 = {
      Ro: [-180, -90, 180, 90],
      project: function(t, e, r) {
          return e = E4326.project(t, e),
          this.transform(e[0], e[1], r)
      },
      unproject: function(t, e, r) {
          return r = this.Xs(t, e, r),
          E4326.unproject(r[0], r[1])
      },
      transform: function(t, e, r) {
          var n = void 0 === r ? 180 : 256 << r
            , a = this.Ro[2] - this.Ro[0]
            , r = this.Ro[3] - this.Ro[1];
          return [t = (t - this.Ro[0]) / a * (2 * n), e = n - (e - this.Ro[1]) / r * n]
      },
      Xs: function(t, e, r) {
          return [t = 360 * (t / (2 * (r = void 0 === r ? 180 : 256 << r)) - .5), e = 180 * -(e / r - .5)]
      },
      nt: function(t, e, r) {
          return this.Xs(t, e, r)
      },
      wu: function(t, e, r) {
          return this.Xs(t, e, r)
      },
      yo: function(t, e, r) {
          var n = 0 < t / this.Ro[3] ? Math.abs(Math.floor(t / this.Ro[3])) : Math.abs(Math.ceil(t / this.Ro[3]))
            , i = 0 < e / this.Ro[3] ? Math.abs(Math.floor(e / this.Ro[3])) : Math.abs(Math.ceil(e / this.Ro[3]))
            , a = t % this.Ro[3]
            , o = e % this.Ro[3]
            , o = this.transform(a, o, r);
          return t = this.wu(t, t, r)[0] * n + o[0],
          e = this.wu(e, e, r)[1] * i + o[1],
          [t - (r = this.transform(0, 0, r))[0], e - r[1]]
      },
      Bb: function(t, e, r) {
          return r.X(t, e)
      },
      qb: function(t, e, r) {
          return r.H(t, e)
      },
      Gd: function(t, e, r, n) {
          var i = n.X(t[0], t[1]);
          return [(r = n.X(t[0] + e, t[1] + r))[0] - i[0], r[1] - i[1]]
      }
  }, SphericalMercator$1 = {
      Ro: [-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244],
      project: function(t, e, r) {
          return e = E3857.project(t, e),
          this.transform(e[0], e[1], r)
      },
      unproject: function(t, e, r) {
          return r = this.Xs(t, e, r),
          E3857.unproject(r[0], r[1])
      },
      transform: function(t, e, r) {
          t = Math.min(20037508.342789244, Math.max(t, -20037508.342789244)),
          e = Math.min(20037508.342789244, Math.max(e, -20037508.342789244));
          var n = void 0 === r ? 40075016.68557849 : 256 * Math.pow(2, r)
            , i = this.Ro[2] - this.Ro[0]
            , r = this.Ro[3] - this.Ro[1];
          return [t = (t - this.Ro[0]) / i * n, e = n - (e - this.Ro[1]) / r * n]
      },
      Xs: function(t, e, r) {
          return [t = (t / (r = void 0 === r ? 40075016.68557849 : 256 * Math.pow(2, r)) - .5) * this.Ro[2] * 2, e = -(e / r - .5) * this.Ro[2] * 2]
      },
      nt: function(t, e, r, n) {
          return [t = this.Xs(t, e, r)[0] - this.Ro[0], e = this.Ro[2] - this.Xs(t, e, r)[1]]
      },
      wu: function(t, e, r, n) {
          var i = n.center
            , a = n.size
            , n = (n.rotation || 0) / 180 * Math.PI
            , e = (t = this.transform(t, e, r))[0]
            , t = t[1]
            , r = e - (i = this.transform(i[0], i[1], r))[0]
            , e = t - i[1]
            , t = Math.sqrt(Math.pow(r, 2) + Math.pow(e, 2))
            , i = 0 == e ? Math.PI / 2 : Math.atan(Math.abs(r / e))
            , n = r * e <= 0 ? i + n : i - n
            , e = 0 < e ? 1 : -1;
          return [a[0] / 2 + t * Math.sin(0 < r ? n : -n), a[1] / 2 + t * Math.cos(n) * e]
      },
      yo: function(t, e, r, n) {
          var i = 0 < t / this.Ro[3] ? Math.abs(Math.floor(t / this.Ro[3])) : Math.abs(Math.ceil(t / this.Ro[3]))
            , a = 0 < e / this.Ro[3] ? Math.abs(Math.floor(e / this.Ro[3])) : Math.abs(Math.ceil(e / this.Ro[3]))
            , o = t % this.Ro[3]
            , s = e % this.Ro[3]
            , o = this.transform(o, s, r)
            , r = (s = this.transform(0, 0, r))[0]
            , s = s[1];
          return [(t = r * i + o[0]) - r, (e = s * a + o[1]) - s]
      },
      Bb: function(t, e, r) {
          return r.X(t, e)
      },
      qb: function(t, e, r) {
          return r.H(t, e)
      },
      Gd: function(t, e, r, n) {
          var i = n.X(t[0], t[1]);
          return [(r = n.X(t[0] + e, t[1] + r))[0] - i[0], r[1] - i[1]]
      }
  }, transform = {
      "EPSG:4326": LngLat$1,
      "EPSG:3857": SphericalMercator$1
  }, LocalZoom = 13, LocalTileZoom = 12, AMapStyleSource = "", zoomRange = [2, 26], CONSTS = {
      ID: "__id__",
      Rp: zoomRange[1],
      Mp: zoomRange[0],
      jp: .8,
      Pp: .2,
      YM: 5,
      KM: {
          dom: "div",
          id: "_amap_custom_labellayer_div_",
          className: "amap-layer",
          style: {
              cssText: "position:absolute;top:0;left:0;",
              zIndex: "",
              width: "",
              height: "",
              visible: ""
          }
      },
      Dp: {
          Op: 180,
          Ad: 70,
          Td: 360,
          t1: 300,
          e1: 30,
          Bd: Math.PI / 10
      },
      XM: {
          top: 3,
          right: 3,
          bottom: 3,
          left: 3
      },
      JM: {
          ZM: "top",
          QM: "right",
          tj: "bottom",
          LEFT: "left",
          nj: "middle",
          ij: "center",
          ej: "alphabetic"
      },
      oj: {
          CLICK: "click",
          MOUSEOVER: "mouseover",
          MOUSEOUT: "mouseout",
          MOUSEMOVE: "mousemove",
          MOUSEDOWN: "mousedown",
          MOUSEUP: "mouseup",
          aj: "touchstart",
          uj: "touchend"
      },
      sj: {
          rank: 1,
          angle: 0,
          opacity: 1,
          offset: [0, 0],
          zooms: zoomRange,
          icon: {
              type: "image",
              image: "://visuallocal.amap.com/public/poi-marker.png",
              clipOrigin: [0, 0],
              clipSize: [36, 36],
              size: [36, 36],
              anchor: "bottom-center",
              angel: 0,
              retina: !0,
              zooms: zoomRange
          },
          text: {
              type: "billboard",
              direction: "top",
              offset: [0, 0],
              zooms: zoomRange,
              style: {
                  fj: 6,
                  fontFamily: "sans-serif",
                  fontSize: 12,
                  fontWeight: "normal",
                  fillColor: [0, 0, 0, 1],
                  strokeWidth: 0,
                  strokeColor: [.988, .988, .988, 1],
                  borderColor: "transparent",
                  padding: [3, 3, 3, 3],
                  backgroundColor: ""
              }
          }
      },
      hj: {
          cj: {
              opacity: .2
          },
          vj: "fadeIn",
          lj: "fadeOut",
          dj: {
              bj: "start",
              RUNNING: "running",
              pj: "complete"
          },
          yj: {
              mj: "opacity",
              gj: "size"
          }
      },
      _d: 3,
      wj: "_AMap_sdf_com_words",
      Mj: 128,
      pc: ["://sdf.amap.com", "://sdf01.amap.com", "://sdf02.amap.com", "://sdf03.amap.com", "://sdf04.amap.com"],
      sp: 4,
      Cd: .78125,
      Ld: 205 / 256,
      Aj: {
          kj: "纹理加载失败，请重试",
          Oj: "资源加载失败，请重试"
      },
      xj: "bufferChanged",
      Ij: "frameBufferChanged",
      Tj: "combineFrameBufferChanged",
      ic: 1,
      ud: 13,
      Cj: 12,
      Ej: "__icon_combination",
      Nj: "__text_combination",
      Lj: {
          file: {
              0: "://vdata.amap.com/style_icon/2.0/icon-normal-big.png",
              1: "://vdata.amap.com/style_icon/2.0/icon-biz-big.png"
          },
          size: [40, 40],
          Rj: 10
      },
      Kp: {
          buffer: 3,
          family: "ios9",
          size: 24
      },
      _n: {
          Uj: [0, 0, 0, 1],
          Gp: [0, 0, 0, 0]
      },
      gH: "sdf",
      RB: "sdfJson",
      FN: "version"
  }, G7, G7 = exports.n0 || (exports.n0 = {});
  G7.nebula = "nebula",
  G7.nebulaLabel = "nebulaLabel";
  var DangerousFontSize = 24, H7, H7 = exports.cY || (exports.cY = {});
  H7[H7.dynamic = 0] = "dynamic",
  H7[H7.icon = 1] = "icon";
  var EnumLabelFragType = {
      icon: 0,
      bg: 6,
      tq: 8,
      text: 2
  }, defaultCap = ["butt", "butt"], I7, I7 = exports.uc || (exports.uc = {});
  I7.BLOB = "blob",
  I7.TOLOAD = "toload",
  I7.LOADING = "loading",
  I7.LOADED = "loaded",
  I7.UNLOADED = "unloaded",
  I7.ERROR = "error",
  I7.RELOADING = "reloading",
  I7.UNCOMBINED = "uncombined",
  I7.COMBINING = "combining",
  I7.COMBINED = "combined";
  var tmp1 = 4294901760
    , tmp2 = 65535;
  function getUploadName(t, e) {
      return ((t = tmp1 - (t << 16)) + (e = tmp2 - e)).toString(16)
  }
  function staticSDFTileKeyToKey(t) {
      var e = map(t.split(","), function(t) {
          return parseInt(t, 10)
      })
        , r = e[1]
        , t = e[2];
      return e[0] < 10 ? "lesszoom10" : (10 === e[0] || (12 === e[0] ? (r = Math.floor(r / 4),
      t = Math.floor(t / 4)) : 14 === e[0] ? (r = Math.floor(r / 16),
      t = Math.floor(t / 16)) : 15 === e[0] && (r = Math.floor(r / 32),
      t = Math.floor(t / 32))),
      getUploadName(r, t))
  }
  var labelsUtil = {
      Bj: function(t) {
          var e, r = {};
          for (e in t = void 0 === t ? {} : t)
              t.hasOwnProperty(e) && (r[e] = 1);
          return r
      },
      zj: function(t, e) {
          t.gs = e,
          t.qj = e.options || {},
          t.Wj = e.Wj || {},
          t.Fs = e.Fs || {},
          t.Gj = e.Gj || {},
          t.Hj = e.Hj || {},
          t.Vj = e.Vj || {},
          t.$j = e.$j || 0
      },
      Yj: function(t, e) {
          void 0 === t && (t = [NaN, NaN, NaN, NaN]),
          void 0 === e && (e = [0, 0, 0, 1]);
          for (var r = 0; r < t.length; r++) {
              var n = t[r];
              isNaN(n) && (t[r] = e[r])
          }
          return t
      },
      Kj: function(t) {
          return [((16711680 & t) >> 16) / 255, ((65280 & t) >> 8) / 255, (255 & t) / 255, 1]
      },
      Xj: function(t, e) {
          for (var r = [], n = (e = void 0 === e ? {} : e).qw, i = e.Aw, a = e.complete, o = 0, s = t; o < s.length; o++) {
              var u = s[o]
                , u = new Promise(u);
              r.push(u)
          }
          var c = 0;
          Promise.all(r).then(function() {
              n && n.apply(void 0, arguments),
              a && !c && (c = 1,
              a.apply(void 0, arguments))
          }).catch(function() {
              i && i.apply(void 0, arguments),
              a && !c && (c = 1,
              a.apply(void 0, arguments))
          })
      },
      Jj: function(t, e) {
          var r = t[0]
            , i = void 0 === (n = t[1]) ? 0 : n
            , n = void 0 === (a = e[0]) ? 0 : a
            , a = void 0 === (a = e[1]) ? 0 : a;
          return t = (void 0 === r ? 0 : r) <= n ? n <= i ? a < i ? [n, a] : [n, i] : null : labelsUtil.Jj(e, t)
      },
      measureText: function(t, e, r, n) {
          if (void 0 === e && (e = ""),
          "3D" === (n = void 0 === n ? "3D" : n))
              return t.measureText(e, r)
      },
      lnglatToContainer: function(t, e) {
          return (void 0 === (e = e.zoom) ? 20 : e) < LocalZoom ? t : (e = lcs.getLocalByCoord(t),
          vector.Ip(t, e.center))
      },
      Sd: function(t, e) {
          var r = t[0]
            , t = void 0 === (n = t[1]) ? 0 : n
            , n = e[0]
            , e = void 0 === (e = e[1]) ? 0 : e
            , r = Math.abs((void 0 === n ? 0 : n) - (void 0 === r ? 0 : r))
            , t = Math.abs(e - t);
          return Math.sqrt(Math.pow(r, 2) + Math.pow(t, 2))
      },
      getAngle: function(t, e) {
          var r = t[0]
            , n = t[1]
            , t = e[0]
            , n = (void 0 === (e = e[1]) ? 0 : e) - (void 0 === n ? 0 : n);
          return 0 == (r = (void 0 === t ? 0 : t) - (void 0 === r ? 0 : r)) ? n < 0 ? 3 * Math.PI / 2 : Math.PI / 2 : 0 === (n = Math.atan(n / r)) || 0 < n ? 0 <= r ? n : n + Math.PI : 0 < r ? 2 * Math.PI + n : Math.PI + n
      },
      Fd: function(t, e, r) {
          for (var n = t[0], i = void 0 === n ? 0 : n, a = void 0 === (t = t[1]) ? 0 : t, o = (void 0 === (t = e[0]) ? 0 : t) - i, s = (void 0 === (e = e[1]) ? 0 : e) - a, u = [], c = 0; c < r; )
              u.push([i + o / (r + 1) * (c + 1), a + s / (r + 1) * (c + 1)]),
              c++;
          return u
      },
      OG: function(t, e, r) {
          return 0 === r ? t : [t[0] + (e[0] - t[0]) * r, t[1] + (e[1] - t[1]) * r]
      },
      Ed: function(t, e) {
          void 0 === e && (e = "ch");
          var r = (t = void 0 === t ? [] : t).length;
          if (!r)
              return !1;
          var n = t[0]
            , i = t[4 <= r ? Math.floor(r / 4 * 3) : r - 1]
            , a = n[0]
            , t = n[1]
            , i = [(r = i[0]) - a, (n = i[1]) - t];
          return (i = "ch" === e && 1 < Math.abs((n - t) / (r - a)) ? vector.Zj(i, [0, 1]) : vector.Zj(i, [1, 0])) < 0
      },
      Nd: function(t, e, r) {
          var n, i = t[0], a = t[1], o = e[0], e = ((t = e[1]) - a) / (o - i), a = [o - i, t - a];
          return 1 < Math.abs(e) && "x" !== r ? (n = 0 < vector.Zj(a, [0, -1]) ? vector.Qj(a, [0, -1]) : vector.Qj(a, [0, 1]),
          0 < e && (n = -n)) : (n = 0 < vector.Zj(a, [1, 0]) ? vector.Qj(a, [1, 0]) : vector.Qj(a, [-1, 0]),
          e < 0 && (n = -n)),
          n
      },
      Od: function(t, e, r) {
          var n = r * Math.sin(e)
            , e = r * Math.cos(e);
          return [t[0] + e, t[1] + n]
      },
      jd: function(t, e, r, n) {
          var i = vector.Ip(t, e)
            , a = vector.length(i)
            , t = vector.Ip(r, e)
            , r = vector.length(t)
            , i = vector.Zj(i, t)
            , i = Math.acos(i / (a * r))
            , r = Math.PI - i
            , i = a * Math.sin(r)
            , r = a * Math.cos(r)
            , n = Math.sqrt(Math.pow(n, 2) - Math.pow(i, 2)) - r
            , i = 0 === t[0] ? 0 < t[1] ? Math.PI / 2 : -Math.PI / 2 : Math.atan(t[1] / t[0])
            , r = Math.abs(n * Math.sin(i))
            , n = n * Math.cos(i)
            , i = vector.Zj(t, [1, 0])
            , t = vector.Zj(t, [0, 1]);
          return vector.add(e, [0 <= i ? n : -n, 0 <= t ? r : -r])
      },
      rank: function(t) {
          for (var e = [], r = 0; r < t.length; r++) {
              var n = parseFloat(t[r]);
              n < 0 ? (t.splice(r--, 1),
              e.push(n)) : t[r] = n
          }
          return t.sort(function(t, e) {
              return t - e
          }),
          e.concat(t)
      },
      $p: function(t) {
          var e = CONSTS.Mp
            , r = CONSTS.Rp;
          return t[1] >= zoomRange[1] && (t[1] = r),
          t[0] <= zoomRange[0] && (t[0] = e),
          t
      },
      toString: function(t, e) {
          void 0 === e && (e = 4);
          var r = "";
          if (!t)
              return r;
          for (var n = 0, i = t; n < i.length; n++) {
              var a = i[n];
              r += (a + "").length < e ? a : a.toFixed(e)
          }
          return r
      },
      xf: function(t, e) {
          var r, n, i, a = [], o = e.ja, s = e.Fa, u = e.Oa, c = e.Ea;
          for (r in t)
              t.hasOwnProperty(r) && r !== CONSTS.gH && r !== CONSTS.FN && r !== CONSTS.RB && ("shields" !== r && o ? (i = r.split("-"),
              n = parseInt(i[1], 10),
              i = parseInt(i[2], 10),
              o <= n && n <= u && s <= i && i <= c && a.push(t[r])) : a.push(t[r]));
          return a.length ? a : t
      },
      EQ: function(t, e) {
          for (var r = [], n = e.length, i = 0; i < n - 1; i++) {
              var a = t.substring(e[i], e[i + 1]);
              r.push(a)
          }
          return n ? r : t.split("")
      },
      aQ: function(t) {
          for (var e = [], r = 0; r < t.length; r++) {
              for (var n = t[r], i = [], a = 0; a < n.length; a++) {
                  var o = n.charCodeAt(a);
                  i.push(o)
              }
              var s = i.join("|");
              e.push(s)
          }
          return e
      },
      tQ: function(t, e, r) {
          var n = ""
            , i = []
            , a = "";
          if (t.name)
              if (t.JQ && 0 < t.JQ.length)
                  n = getSpiltLineWithSpiltIndex(t.name, t.JQ),
                  a = "ch";
              else if (r) {
                  var o = r.lineBreak(t.name, {
                      from: "labelsLayer",
                      CO: []
                  })
                    , s = 0
                    , u = "";
                  if (2 <= o.oQ.length) {
                      for (var c = 1, f = o.oQ.length - 1; c < f; c++)
                          u += t.name.slice(s, o.oQ[c]) + " ",
                          s = o.oQ[c];
                      u += t.name.slice(s)
                  } else
                      u = t.name;
                  n = u,
                  a = "ch"
              } else
                  n = t.name,
                  a = "ch";
          else {
              switch (e) {
              case "en":
                  n = t.name_en,
                  i = t.iQ,
                  a = "en";
                  break;
              case "local":
                  n = t.QQ,
                  i = t.$G,
                  a = t.CQ;
                  break;
              default:
                  n = t.BQ,
                  a = "ch"
              }
              n || (t.name_en ? (n = t.name_en,
              i = t.iQ,
              a = "en") : t.QQ && (n = t.QQ,
              i = t.$G,
              a = t.QQ))
          }
          return {
              name: n,
              $G: i,
              type: a
          }
      }
  }
    , vector = {
      add: function(t, e) {
          for (var r = [], n = 0; n < t.length; n++)
              r[n] = t[n] + e[n];
          return r
      },
      Ip: function(t, e) {
          for (var r = [], n = 0; n < t.length; n++)
              r.push(t[n] - e[n]);
          return r
      },
      multiply: function(t, e) {
          for (var r = [], n = 0, i = t; n < i.length; n++) {
              var a = i[n];
              r.push(a * e)
          }
          return r
      },
      Up: function(t, e) {
          for (var r = [], n = 0; n < t.length; n++)
              r[n] = t[n] / e;
          return r
      },
      tA: function(t) {
          return this.multiply(t, -1)
      },
      Zj: function(t, e) {
          var r = t[0]
            , n = t[1];
          return (void 0 === r ? 0 : r) * (void 0 === (t = e[0]) ? 0 : t) + (void 0 === n ? 0 : n) * (void 0 === (e = e[1]) ? 0 : e)
      },
      Qj: function(t, e) {
          var r = vector.Zj(t, e)
            , t = vector.length(t)
            , e = vector.length(e);
          return Math.acos(r / (t * e))
      },
      length: function(t) {
          var e = t[0]
            , t = t[1];
          return Math.sqrt(Math.pow(e, 2) + Math.pow(t, 2))
      }
  }
    , noop = function(t) {};
  function getSpiltLineWithSpiltIndex(t, e) {
      if (e.shift(),
      0 === e.length)
          return t;
      for (var r = "", n = 0, i = 0, a = e.length; i < a; i++)
          r += t.substr(n, e[i] - n) + " ",
          n = e[i];
      return r + t.substr(e[e.length - 1])
  }
  var XHR = {
      send: function(t, e) {
          void 0 === e && (e = {});
          var r = new XMLHttpRequest
            , i = void 0 === (n = e.qw) ? noop : n
            , o = void 0 === (a = e.Aw) ? noop : a
            , n = e.Me
            , a = e.method
            , e = e.content;
          return r.onreadystatechange = function() {
              if (4 === r.readyState && 200 === r.status) {
                  var t = r.response;
                  try {
                      i(t)
                  } catch (t) {
                      o(t)
                  }
              } else
                  404 === r.status && (r.abort(),
                  o(Error("404")))
          }
          ,
          r.onerror = function(t) {
              r.abort(),
              o(t)
          }
          ,
          r.open(a || "GET", t, !0),
          r.responseType = n || "json",
          r.send(e || void 0),
          r
      }
  }
    , scale = Browser.scale
    , LabelsRenderUtil = {
      getBounds: function(t, e) {
          var r = (e = void 0 === e ? {} : e).zoom
            , n = e.centerCoord
            , i = (e.view,
          [150 * scale, 150 * scale, 150 * scale, 150 * scale])
            , o = (a = t.boundsCoord)[0]
            , s = a[1]
            , u = a[2]
            , c = a[3]
            , t = this.nt(0, 0, r, e)
            , a = vector.Ip(this.nt(i[0], i[1], r, e), t)
            , t = vector.Ip(this.nt(i[2], i[3], r, e), t)
            , n = (r = LocalZoom <= r ? n : [0, 0])[0]
            , r = r[1];
          return [[o - n - Math.abs(t[1]), s - r - Math.abs(t[0])], [u - n + Math.abs(a[1]), c - r + Math.abs(a[0])]]
      },
      gz: function(t, e) {
          var r = e[0]
            , n = e[1]
            , i = t[0]
            , e = t[1]
            , t = i - r[0]
            , r = e - r[1]
            , i = n[0] - i
            , e = n[1] - e;
          return 0 <= t && 0 <= r && 0 <= i && 0 <= e
      },
      getRank: function(t, e) {
          var r = (e = void 0 === e ? {} : e).forceShow
            , e = e._z
            , t = (t.data || {}).rank || 1;
          return void 0 !== r && r ? t - 1e5 : (void 0 === e ? 0 : e) / 100 * 2e5 + t
      },
      wu: function(t, e, r, n) {
          if (void 0 === t && (t = 0),
          void 0 === e && (e = 0),
          n) {
              var i = n.viewState
                , a = n.size
                , o = n.transform
                , s = n.view
                , u = n.viewMode
                , c = n.centerCoord
                , n = n.positionType;
              return "2D" !== u ? "relative" === (void 0 === n ? "relative" : n) ? s.H(t, e) : s._u(t, e) : (a = {
                  center: i.centerCoord,
                  rotation: i.rotation,
                  size: a
              },
              c = (i = i.optimalZoom >= LocalZoom ? c : [0, 0])[0],
              i = i[1],
              o.wu(t + c, e + i, r, a))
          }
      },
      r0: function(t, e, r, n, i) {
          if (void 0 === t && (t = 0),
          void 0 === e && (e = 0),
          void 0 === r && (r = 0),
          i) {
              var a = i.viewState
                , o = i.size
                , s = i.transform
                , u = i.view
                , c = i.viewMode
                , f = i.centerCoord
                , i = i.positionType;
              return "2D" !== c ? "relative" === (void 0 === i ? "relative" : i) ? u.H(t, e, r) : u._u(t, e, r) : (o = {
                  center: a.centerCoord,
                  rotation: a.rotation,
                  size: o
              },
              f = (a = a.optimalZoom >= LocalZoom ? f : [0, 0])[0],
              a = a[1],
              s.wu(t + f, e + a, n, o))
          }
      },
      kz: function(t, e, r, n) {
          if (void 0 === t && (t = []),
          n = (n = void 0 === n ? {} : n).centerCoord,
          e < LocalZoom && LocalZoom <= r) {
              for (var i = n[0], a = n[1], o = [], s = 0, u = t; s < u.length; s++) {
                  var c = u[s];
                  o.push([c[0] - i, c[1] - a])
              }
              return o
          }
          return t
      },
      nt: function(t, e, r, n) {
          void 0 === t && (t = 0),
          void 0 === e && (e = 0);
          var i = n.view
            , a = n.transform;
          return "2D" === n.viewMode ? a.nt(t, e, r) : i.X(t, e)
      },
      MG: function(t, e) {
          return t < LocalZoom - 1 ? [0, 0] : e
      }
  };
  function isLngLat(t) {
      return t && "AMap.LngLat" === t.className
  }
  function isPixel(t) {
      return t && "AMap.Pixel" === t.className
  }
  function isSize(t) {
      return t && "AMap.Size" === t.className
  }
  function isLayer(t) {
      return Boolean(t && t.el && "AMap.Layer" === t.el)
  }
  function isVectorLayer(t) {
      return t && "AMap.VectorLayer" === t.CLASS_NAME
  }
  function isOverlay(t) {
      return t && t.className && Util.startsWith(t.className, "Overlay")
  }
  function isOverlayGroup(t) {
      return t && ("Overlay.OverlayGroup" === t.className || "Overlay.GeoJSON" === t.className)
  }
  function isCircleMarker(t) {
      return t && t.className && "Overlay.CircleMarker" === t.className
  }
  function isPolyline(t) {
      return t && t.className && "Overlay.Polyline" === t.className
  }
  function isBezierCurve(t) {
      return t && t.className && "Overlay.BezierCurve" === t.className
  }
  function isBounds(t) {
      return t && "AMap.Bounds" === t.className
  }
  function isNumber(t) {
      return "number" == typeof +(t = +t) && !isNaN(t)
  }
  function isNumberArray(t) {
      return Array.isArray(t) && isNumber(t[0])
  }
  function isNumberArrayArray(t) {
      return Array.isArray(t) && isNumberArray(t[0])
  }
  function isNumberArrayArrayArray(t) {
      return Array.isArray(t) && isNumberArrayArray(t[0])
  }
  function isNumberArrayArrayArrayArray(t) {
      return Array.isArray(t) && isNumberArrayArrayArray(t[0])
  }
  function isLnglatLike(t) {
      return isLngLat(t) || isNumberArray(t)
  }
  function isLnglatLikeArray(t) {
      return Array.isArray(t) && isLnglatLike(t[0])
  }
  function isLnglatLikeArrayArray(t) {
      return Array.isArray(t) && isLnglatLikeArray(t[0])
  }
  function isLnglatLikeArrayArrayArray(t) {
      return Array.isArray(t) && isLnglatLikeArrayArray(t[0])
  }
  function isInnerLabelsLayer(t) {
      return t && "AMap.Inner.LabelsLayer" === t.CLASS_NAME
  }
  function isUndefined$1(t) {
      return void 0 === t
  }
  function calcTileMectorBounds(t, e, r) {
      var n = ProjectionManager.getProjection("EPSG:3857")
        , i = Math.pow(2, t)
        , a = (e = (a = 360 / i) * e - 180) + a
        , t = (r = (t = 180 / i) * (i - r - 1) - 90) + t;
      return [r = (e = n.project(e, r))[0], e = e[1], (t = n.project(a, t))[0], t[1]]
  }
  function parseLngLatData(t) {
      if (Array.isArray(t)) {
          if (!Array.isArray(t[0])) {
              var e = typeof t[0];
              return "string" == e || "number" == e ? new LngLat$2(t[0],t[1]) : t
          }
          for (var r = 0; r < t.length; r += 1)
              t[r] = parseLngLatData(t[r])
      }
      return t
  }
  function jsonLngLatData(t) {
      if (isLngLat(t))
          return [t.getLng(), t.getLat()];
      if (Array.isArray(t)) {
          for (var e = t.slice(0), r = 0; r < e.length; r += 1)
              e[r] = jsonLngLatData(e[r]);
          return e
      }
      return t
  }
  var Coordinate = {
      lr: function(t, e) {
          for (var r = 1 / 0, n = 0, i = 1, a = e.length; i < a; n = i,
          i += 1)
              r = Math.min(r, this.ur(t, [e[n], e[i]]));
          return Math.sqrt(r)
      },
      ur: function(t, e) {
          return this.cr(t, this.closestOnSegment(t, e))
      },
      cr: function(t, e) {
          var r = t[0] - e[0];
          return r * r + (e = t[1] - e[1]) * e
      },
      pr: function(t, e, r, n) {
          if (n = n || 1e-6,
          r[0] !== e[0])
              return i = Math.min(e[0], r[0]),
              a = Math.max(e[0], r[0]),
              e = (r[1] - e[1]) / (r[0] - e[0]) * (t[0] - e[0]) + e[1],
              Math.abs(e - t[1]) < n && t[0] >= i && t[0] <= a;
          var i = Math.min(e[1], r[1])
            , a = Math.max(e[1], r[1]);
          return Math.abs(t[0] - r[0]) < n && t[1] >= i && t[1] <= a
      },
      closestOnSegment: function(t, e) {
          var r, n = t[0], i = t[1], a = e[0], o = e[1], s = a[0], u = a[1], t = o[0], o = (e = o[1]) - u, o = (i = 0 == (a = t - s) && 0 == o ? 0 : (a * (n - s) + o * (i - u)) / (a * a + o * o || 0)) <= 0 ? (r = s,
          u) : 1 <= i ? (r = t,
          e) : (r = s + i * a,
          u + i * o);
          return [r, o]
      },
      isClockwise: function(t) {
          for (var e, r, n = t.length, i = 0, a = t[n - 1], o = a[0], s = a[1], u = 0; u < n; u += 1)
              i += ((e = (r = t[u])[0]) - o) * ((r = r[1]) + s),
              o = e,
              s = r;
          return 0 < i
      },
      ss: function(t, e, r) {
          for (var n = t[0], i = t[1], a = !1, o = e.length, s = 0, u = o - 1; s < o; u = s,
          s += 1) {
              var c = !1
                , f = e[s][0]
                , l = e[s][1]
                , h = e[u][0]
                , d = e[u][1];
              if (f === n && l === i || h === n && d === i)
                  return !!r;
              if (l < i == i <= d) {
                  if (n === (f = (h - f) * (i - l) / (d - l) + f))
                      return !!r;
                  c = n < f
              }
              c && (a = !a)
          }
          return a
      },
      dr: function(t, e) {
          for (var r, n = function(t, e, r) {
              return (r[0] - e[0]) * (t[1] - e[1]) > (r[1] - e[1]) * (t[0] - e[0])
          }, i = function(t, e, r, n) {
              var i = [t[0] - e[0], t[1] - e[1]]
                , a = [r[0] - n[0], r[1] - n[1]]
                , e = t[0] * e[1] - t[1] * e[0]
                , r = r[0] * n[1] - r[1] * n[0]
                , n = 1 / (i[0] * a[1] - i[1] * a[0]);
              return [(e * a[0] - r * i[0]) * n, (e * a[1] - r * i[1]) * n]
          }, a = t, o = e[e.length - 2], s = 0, u = e.length - 1; s < u; s++) {
              for (var c = e[s], f = a, a = [], l = f[f.length - 1], h = 0, d = f.length; h < d; h++)
                  n(r = f[h], o, c) ? (n(l, o, c) || a.push(i(o, c, l, r)),
                  a.push(r)) : n(l, o, c) && a.push(i(o, c, l, r)),
                  l = r;
              o = c
          }
          return a.length < 3 ? [] : (a.push(a[0]),
          a)
      }
  }
    , Pixel = ($o.prototype.getX = function() {
      return this.x
  }
  ,
  $o.prototype.round = function() {
      return new $o(Math.round(this.x),Math.round(this.y))
  }
  ,
  $o.prototype.getY = function() {
      return this.y
  }
  ,
  $o.prototype.toString = function() {
      return this.x + "," + this.y
  }
  ,
  $o.prototype.equals = function(t) {
      return t instanceof $o && Math.max(Math.abs(this.x - t.x), Math.abs(this.y - t.y)) <= 1e-9
  }
  ,
  $o.prototype.toArray = function() {
      return [this.x, this.y]
  }
  ,
  $o.prototype.subtract = function(t, e) {
      return new $o(this.x - t.x,this.y - t.y,e)
  }
  ,
  $o.prototype.multiplyBy = function(t, e) {
      return new $o(this.x * t,this.y * t,e)
  }
  ,
  $o.prototype.direction = function() {
      var t = this.x
        , e = this.y;
      if (0 === t && 0 === e)
          return null;
      if (0 === t)
          return 0 < e ? 90 : 270;
      var r = 180 * Math.atan(e / t) / Math.PI;
      return t < 0 && 0 < e || t < 0 && e < 0 ? 180 + r : 0 < t && e < 0 ? 360 + r : r
  }
  ,
  $o.prototype.toJSON = function() {
      return [this.x, this.y]
  }
  ,
  $o);
  function $o(t, e, r) {
      if (void 0 === r && (r = !1),
      this.className = "AMap.Pixel",
      isNaN(t) || isNaN(e))
          throw new Error("Invalid Object: Pixel(" + t + ", " + e + ")");
      this.x = r ? Math.round(t) : Number(t),
      this.y = r ? Math.round(e) : Number(e)
  }
  var commonjsGlobal = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {};
  function unwrapExports(t) {
      return t && t.gP && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t
  }
  function createCommonjsModule(t, e) {
      return t(e = {
          exports: {}
      }, e.exports),
      e.exports
  }
  var dist = createCommonjsModule(function(t, e) {
      !function(t) {
          function n(t, e) {
              return e < t ? 1 : t < e ? -1 : 0
          }
          function b(e, r) {
              void 0 === r && (r = !1),
              this.bP = e = void 0 === e ? n : e,
              this.yP = null,
              this._size = 0,
              this.mP = !!r
          }
          var vt = {
              size: {
                  configurable: !0
              }
          };
          b.prototype.TP = function(e) {
              var r = e.right;
              r && (e.right = r.left,
              r.left && (r.left.parent = e),
              r.parent = e.parent),
              e.parent ? e === e.parent.left ? e.parent.left = r : e.parent.right = r : this.yP = r,
              r && (r.left = e),
              e.parent = r
          }
          ,
          b.prototype.wP = function(e) {
              var r = e.left;
              r && (e.left = r.right,
              r.right && (r.right.parent = e),
              r.parent = e.parent),
              e.parent ? e === e.parent.left ? e.parent.left = r : e.parent.right = r : this.yP = r,
              r && (r.right = e),
              e.parent = r
          }
          ,
          b.prototype.AP = function(e) {
              for (; e.parent; ) {
                  var r = e.parent;
                  r.parent ? r.left === e && r.parent.left === r ? (this.wP(r.parent),
                  this.wP(r)) : r.right === e && r.parent.right === r ? (this.TP(r.parent),
                  this.TP(r)) : r.left === e && r.parent.right === r ? (this.wP(r),
                  this.TP(r)) : (this.TP(r),
                  this.wP(r)) : r.left === e ? this.wP(r) : this.TP(r)
              }
          }
          ,
          b.prototype.xP = function(e) {
              for (var r, n, a, o; e.parent; )
                  (n = (r = e.parent).parent) && n.parent ? ((o = n.parent).left === n ? o.left = e : o.right = e,
                  e.parent = o) : (e.parent = null,
                  this.yP = e),
                  a = e.left,
                  o = e.right,
                  e === r.left ? (n && (n.left === r ? (r.right ? (n.left = r.right,
                  n.left.parent = n) : n.left = null,
                  (r.right = n).parent = r) : (a ? (n.right = a).parent = n : n.right = null,
                  (e.left = n).parent = e)),
                  o ? (r.left = o).parent = r : r.left = null,
                  (e.right = r).parent = e) : (n && (n.right === r ? (r.left ? (n.right = r.left,
                  n.right.parent = n) : n.right = null,
                  (r.left = n).parent = r) : (o ? (n.left = o).parent = n : n.left = null,
                  (e.right = n).parent = e)),
                  a ? (r.right = a).parent = r : r.right = null,
                  (e.left = r).parent = e)
          }
          ,
          b.prototype.replace = function(e, r) {
              e.parent ? e === e.parent.left ? e.parent.left = r : e.parent.right = r : this.yP = r,
              r && (r.parent = e.parent)
          }
          ,
          b.prototype.MP = function(e) {
              if (e = void 0 === e ? this.yP : e)
                  for (; e.left; )
                      e = e.left;
              return e
          }
          ,
          b.prototype.SP = function(e) {
              if (e = void 0 === e ? this.yP : e)
                  for (; e.right; )
                      e = e.right;
              return e
          }
          ,
          b.prototype.Xc = function(e, r) {
              var n = this.yP
                , i = null
                , a = this.bP;
              if (this.mP)
                  for (; n; ) {
                      if (0 === a((i = n).key, e))
                          return;
                      n = a(n.key, e) < 0 ? n.right : n.left
                  }
              else
                  for (; n; )
                      n = a((i = n).key, e) < 0 ? n.right : n.left;
              return n = {
                  key: e,
                  data: r,
                  left: null,
                  right: null,
                  parent: i
              },
              i ? a(i.key, n.key) < 0 ? i.right = n : i.left = n : this.yP = n,
              this.xP(n),
              this._size++,
              n
          }
          ,
          b.prototype.find = function(e) {
              for (var r = this.yP, n = this.bP; r; ) {
                  var i = n(r.key, e);
                  if (i < 0)
                      r = r.right;
                  else {
                      if (!(0 < i))
                          return r;
                      r = r.left
                  }
              }
              return null
          }
          ,
          b.prototype.contains = function(e) {
              for (var r = this.yP, n = this.bP; r; ) {
                  var i = n(e, r.key);
                  if (0 === i)
                      return !0;
                  r = i < 0 ? r.left : r.right
              }
              return !1
          }
          ,
          b.prototype.remove = function(n) {
              var r = this.find(n);
              return !!r && (this.xP(r),
              r.left ? r.right ? ((n = this.MP(r.right)).parent !== r && (this.replace(n, n.right),
              n.right = r.right,
              n.right.parent = n),
              this.replace(r, n),
              n.left = r.left,
              n.left.parent = n) : this.replace(r, r.left) : this.replace(r, r.right),
              this._size--,
              !0)
          }
          ,
          b.prototype.removeNode = function(e) {
              return !!e && (this.xP(e),
              e.left ? e.right ? ((r = this.MP(e.right)).parent !== e && (this.replace(r, r.right),
              r.right = e.right,
              r.right.parent = r),
              this.replace(e, r),
              r.left = e.left,
              r.left.parent = r) : this.replace(e, e.left) : this.replace(e, e.right),
              this._size--,
              !0);
              var r
          }
          ,
          b.prototype.$P = function(i) {
              var n, a = this.find(i);
              a && (this.xP(a),
              n = a.left,
              i = a.right,
              a = null,
              n && (n.parent = null,
              a = this.SP(n),
              this.xP(a),
              this.yP = a),
              i && (n ? a.right = i : this.yP = i,
              i.parent = a),
              this._size--)
          }
          ,
          b.prototype.pop = function() {
              var e = this.yP
                , r = null;
              if (e) {
                  for (; e.left; )
                      e = e.left;
                  r = {
                      key: e.key,
                      data: e.data
                  },
                  this.remove(e.key)
              }
              return r
          }
          ,
          b.prototype.next = function(e) {
              var r = e;
              if (r)
                  if (r.right)
                      for (r = r.right; r && r.left; )
                          r = r.left;
                  else
                      for (r = e.parent; r && r.right === e; )
                          r = (e = r).parent;
              return r
          }
          ,
          b.prototype.NM = function(e) {
              var r = e;
              if (r)
                  if (r.left)
                      for (r = r.left; r && r.right; )
                          r = r.right;
                  else
                      for (r = e.parent; r && r.left === e; )
                          r = (e = r).parent;
              return r
          }
          ,
          b.prototype.forEach = function(e) {
              for (var r = this.yP, n = [], i = !1, a = 0; !i; )
                  r ? (n.push(r),
                  r = r.left) : 0 < n.length ? (e(r = n.pop(), a++),
                  r = r.right) : i = !0;
              return this
          }
          ,
          b.prototype.range = function(e, r, n, i) {
              for (var a = [], o = this.bP, s = this.yP; 0 !== a.length || s; )
                  if (s)
                      a.push(s),
                      s = s.left;
                  else {
                      if (0 < o((s = a.pop()).key, r))
                          break;
                      if (0 <= o(s.key, e) && n.call(i, s))
                          return this;
                      s = s.right
                  }
              return this
          }
          ,
          b.prototype.keys = function() {
              for (var e = this.yP, r = [], n = [], i = !1; !i; )
                  e ? (r.push(e),
                  e = e.left) : 0 < r.length ? (e = r.pop(),
                  n.push(e.key),
                  e = e.right) : i = !0;
              return n
          }
          ,
          b.prototype.values = function() {
              for (var e = this.yP, r = [], n = [], i = !1; !i; )
                  e ? (r.push(e),
                  e = e.left) : 0 < r.length ? (e = r.pop(),
                  n.push(e.data),
                  e = e.right) : i = !0;
              return n
          }
          ,
          b.prototype.at = function(e) {
              for (var r = this.yP, n = [], i = !1, a = 0; !i; )
                  if (r)
                      n.push(r),
                      r = r.left;
                  else if (0 < n.length) {
                      if (r = n.pop(),
                      a === e)
                          return r;
                      a++,
                      r = r.right
                  } else
                      i = !0;
              return null
          }
          ,
          b.prototype.load = function(e, r, n) {
              if (void 0 === e && (e = []),
              void 0 === r && (r = []),
              void 0 === n && (n = !1),
              0 !== this._size)
                  throw new Error("bulk-load: tree is not empty");
              var i = e.length;
              return n && function c(t, e, r, n, i) {
                  if (!(n <= r)) {
                      for (var a = t[r + n >> 1], o = r - 1, s = n + 1; ; ) {
                          for (; i(t[++o], a) < 0; )
                              ;
                          for (; 0 < i(t[--s], a); )
                              ;
                          if (s <= o)
                              break;
                          var u = t[o];
                          t[o] = t[s],
                          t[s] = u,
                          u = e[o],
                          e[o] = e[s],
                          e[s] = u
                      }
                      c(t, e, r, s, i),
                      c(t, e, s + 1, n, i)
                  }
              }(e, r, 0, i - 1, this.bP),
              this.yP = function f(c, e, r, n, i) {
                  var o = i - n;
                  if (0 < o)
                      return o = n + Math.floor(o / 2),
                      (c = {
                          key: e[o],
                          data: r[o],
                          parent: c
                      }).left = f(c, e, r, n, o),
                      c.right = f(c, e, r, o + 1, i),
                      c;
                  return null
              }(null, e, r, 0, i),
              this._size = i,
              this
          }
          ,
          b.prototype.min = function() {
              var e = this.MP(this.yP);
              return e ? e.key : null
          }
          ,
          b.prototype.max = function() {
              var e = this.SP(this.yP);
              return e ? e.key : null
          }
          ,
          b.prototype.isEmpty = function() {
              return null === this.yP
          }
          ,
          vt.size.get = function() {
              return this._size
          }
          ,
          b.LP = function(e, r, n, i, a) {
              return new b(n,a).load(e, r, i)
          }
          ,
          Object.defineProperties(b.prototype, vt);
          var o = 0
            , u = 1
            , l = 2
            , h = 3
            , p = 0
            , s = 1
            , m = 2
            , d = 3;
          function y(t, n, r) {
              null === n ? (t.PP = !1,
              t.OP = !0) : (t._P === n._P ? (t.PP = !n.PP,
              t.OP = n.OP) : (t.PP = !n.OP,
              t.OP = n.NP() ? !n.PP : n.PP),
              n && (t.CP = !i(n, r) || n.NP() ? n.CP : n));
              n = i(t, r);
              t.hN = n ? function(t, e) {
                  var i, r = !t.PP, n = !t.OP;
                  switch (e) {
                  case p:
                      i = r && n;
                      break;
                  case s:
                      i = r || n;
                      break;
                  case d:
                      i = r ^ n;
                      break;
                  case m:
                      i = t._P ? r && !n : n && !r
                  }
                  return i ? 1 : -1
              }(t, r) : 0
          }
          function i(t, e) {
              switch (t.type) {
              case o:
                  switch (e) {
                  case p:
                      return !t.OP;
                  case s:
                      return t.OP;
                  case m:
                      return t._P && t.OP || !t._P && !t.OP;
                  case d:
                      return !0
                  }
                  break;
              case l:
                  return e === p || e === s;
              case h:
                  return e === m;
              case u:
                  return !1
              }
              return !1
          }
          function v(e, r, n, i, a) {
              this.left = r,
              this.point = e,
              this.IP = n,
              this._P = i,
              this.type = a || o,
              this.PP = !1,
              this.OP = !1,
              this.CP = null,
              this.hN = 0,
              this.lN = -1,
              this.dN = -1,
              this.DP = !0
          }
          vt = {
              EP: {
                  configurable: !0
              }
          };
          function g(t, e) {
              return t[0] === e[0] && t[1] === e[1]
          }
          v.prototype.FP = function(e) {
              var r = this.point
                , n = this.IP.point;
              return this.left ? 0 < (r[0] - e[0]) * (n[1] - e[1]) - (n[0] - e[0]) * (r[1] - e[1]) : 0 < (n[0] - e[0]) * (r[1] - e[1]) - (r[0] - e[0]) * (n[1] - e[1])
          }
          ,
          v.prototype.RP = function(e) {
              return !this.FP(e)
          }
          ,
          v.prototype.NP = function() {
              return this.point[0] === this.IP.point[0]
          }
          ,
          vt.EP.get = function() {
              return 0 !== this.hN
          }
          ,
          v.prototype.clone = function() {
              var e = new v(this.point,this.left,this.IP,this._P,this.type);
              return e.UP = this.UP,
              e.hN = this.hN,
              e.CP = this.CP,
              e.DP = this.DP,
              e.PP = this.PP,
              e.OP = this.OP,
              e
          }
          ,
          Object.defineProperties(v.prototype, vt);
          var vt = 11102230246251565e-32
            , _ = 134217729;
          function U(t, e, r, n, i) {
              var a, o, s, u, c = e[0], f = n[0], l = 0, h = 0;
              c < f == -c < f ? (a = c,
              c = e[++l]) : (a = f,
              f = n[++h]);
              var d = 0;
              if (l < t && h < r)
                  for (c < f == -c < f ? (s = a - ((o = c + a) - c),
                  c = e[++l]) : (s = a - ((o = f + a) - f),
                  f = n[++h]),
                  a = o,
                  0 !== s && (i[d++] = s); l < t && h < r; )
                      c < f == -c < f ? (s = a - ((o = a + c) - (u = o - a)) + (c - u),
                      c = e[++l]) : (s = a - ((o = a + f) - (u = o - a)) + (f - u),
                      f = n[++h]),
                      a = o,
                      0 !== s && (i[d++] = s);
              for (; l < t; )
                  s = a - ((o = a + c) - (u = o - a)) + (c - u),
                  c = e[++l],
                  a = o,
                  0 !== s && (i[d++] = s);
              for (; h < r; )
                  s = a - ((o = a + f) - (u = o - a)) + (f - u),
                  f = n[++h],
                  a = o,
                  0 !== s && (i[d++] = s);
              return 0 === a && 0 !== d || (i[d++] = a),
              d
          }
          function x(t) {
              return new (commonjsGlobal.Float64Array ? Float64Array : Array)(t)
          }
          var F = x(4)
            , B = x(8)
            , G = x(12)
            , z = x(16)
            , V = x(4);
          function M(t, e, r, n, i, a) {
              var o = (e - a) * (r - i)
                , c = (t - i) * (n - a)
                , u = o - c;
              if (0 == o || 0 == c || 0 < o != 0 < c)
                  return u;
              c = Math.abs(o + c);
              return Math.abs(u) >= 33306690738754716e-32 * c ? u : -function(s, u, r, n, c, f, o) {
                  var l, g, b, p, m, y, x, w, A, M, S = s - c, O = r - c, I = u - f, $ = n - f, T = S * $, h = _ * S, d = h - (h - S), v = S - d;
                  F[0] = (x = v * (b = $ - (g = (h = _ * $) - (h - $))) - (T - d * g - v * g - d * b)) - ((p = x - (A = (v = I - (d = (h = _ * I) - (h - I))) * (b = O - (g = (h = _ * O) - (h - O))) - ((w = I * O) - d * g - v * g - d * b))) + (l = x - p)) + (l - A),
                  F[1] = (y = T - ((m = T + p) - (l = m - T)) + (p - l)) - ((p = y - w) + (l = y - p)) + (l - w),
                  F[2] = m - ((M = m + p) - (l = M - m)) + (p - l),
                  F[3] = M;
                  var C = function(t, e) {
                      for (var r = e[0], n = 1; n < t; n++)
                          r += e[n];
                      return r
                  }(4, F)
                    , k = 22204460492503146e-32 * o;
                  return k <= C || k <= -C ? C : (s = s - (S + (l = s - S)) + (l - c),
                  c = r - (O + (l = r - O)) + (l - c),
                  u = u - (I + (l = u - I)) + (l - f),
                  f = n - ($ + (l = n - $)) + (l - f),
                  0 == s && 0 == u && 0 == c && 0 == f || (k = 11093356479670487e-47 * o + 33306690738754706e-32 * Math.abs(C)) <= (C += S * f + $ * s - (I * c + O * u)) || k <= -C ? C : (V[0] = (x = (v = s - (d = (h = _ * s) - (h - s))) * (b = $ - (g = (h = _ * $) - (h - $))) - ((T = s * $) - d * g - v * g - d * b)) - ((p = x - (A = (v = u - (d = (h = _ * u) - (h - u))) * (b = O - (g = (h = _ * O) - (h - O))) - ((w = u * O) - d * g - v * g - d * b))) + (l = x - p)) + (l - A),
                  V[1] = (y = T - ((m = T + p) - (l = m - T)) + (p - l)) - ((p = y - w) + (l = y - p)) + (l - w),
                  V[2] = m - ((M = m + p) - (l = M - m)) + (p - l),
                  V[3] = M,
                  O = U(4, F, 4, V, B),
                  V[0] = (x = (v = S - (d = (h = _ * S) - (h - S))) * (b = f - (g = (h = _ * f) - (h - f))) - ((T = S * f) - d * g - v * g - d * b)) - ((p = x - (A = (v = I - (d = (h = _ * I) - (h - I))) * (b = c - (g = (h = _ * c) - (h - c))) - ((w = I * c) - d * g - v * g - d * b))) + (l = x - p)) + (l - A),
                  V[1] = (y = T - ((m = T + p) - (l = m - T)) + (p - l)) - ((p = y - w) + (l = y - p)) + (l - w),
                  V[2] = m - ((M = m + p) - (l = M - m)) + (p - l),
                  V[3] = M,
                  O = U(O, B, 4, V, G),
                  V[0] = (x = (v = s - (d = (h = _ * s) - (h - s))) * (b = f - (g = (h = _ * f) - (h - f))) - ((T = s * f) - d * g - v * g - d * b)) - ((p = x - (A = (v = u - (d = (h = _ * u) - (h - u))) * (b = c - (g = (h = _ * c) - (h - c))) - ((w = u * c) - d * g - v * g - d * b))) + (l = x - p)) + (l - A),
                  V[1] = (y = T - ((m = T + p) - (l = m - T)) + (p - l)) - ((p = y - w) + (l = y - p)) + (l - w),
                  V[2] = m - ((M = m + p) - (l = M - m)) + (p - l),
                  V[3] = M,
                  O = U(O, G, 4, V, z),
                  z[O - 1]))
              }(t, e, r, n, i, a, c)
          }
          function S(t, e, n) {
              n = M(t[0], t[1], e[0], e[1], n[0], n[1]);
              return 0 < n ? -1 : n < 0 ? 1 : 0
          }
          function P(t, e) {
              var r = t.point
                , n = e.point;
              return r[0] > n[0] ? 1 : r[0] < n[0] ? -1 : r[1] !== n[1] ? r[1] > n[1] ? 1 : -1 : function(t, e, r) {
                  return t.left !== e.left ? t.left ? 1 : -1 : 0 !== S(r, t.IP.point, e.IP.point) ? t.FP(e.IP.point) ? -1 : 1 : !t._P && e._P ? 1 : -1
              }(t, e, r)
          }
          function $(t, i, r) {
              var n = new v(i,!1,t,t._P)
                , i = new v(i,!0,t.IP,t._P);
              return g(t.point, t.IP.point) && console.warn("what is that, a collapsed segment?", t),
              n.UP = i.UP = t.UP,
              0 < P(i, t.IP) && (t.IP.left = !0,
              i.left = !1),
              t.IP.IP = i,
              t.IP = n,
              r.push(i),
              r.push(n),
              r
          }
          function C(t, e) {
              return t[0] * e[1] - t[1] * e[0]
          }
          function k(t, e) {
              return t[0] * e[0] + t[1] * e[1]
          }
          function L(t, e, r) {
              var s = function(t, h, r, d, i) {
                  var a = [h[0] - t[0], h[1] - t[1]]
                    , p = [d[0] - r[0], d[1] - r[1]];
                  function s(t, e, r) {
                      return [t[0] + e * r[0], t[1] + e * r[1]]
                  }
                  var v = [r[0] - t[0], r[1] - t[1]]
                    , c = C(a, p)
                    , b = k(a, a);
                  if (0 < c * c) {
                      h = C(v, p) / c;
                      if (h < 0 || 1 < h)
                          return null;
                      d = C(v, a) / c;
                      return d < 0 || 1 < d ? null : 0 == h || 1 == h ? i ? null : [s(t, h, a)] : 0 == d || 1 == d ? i ? null : [s(r, d, p)] : [s(t, h, a)]
                  }
                  return 0 < (c = C(v, a)) * c ? null : (v = k(a, v) / b,
                  p = v + k(a, p) / b,
                  b = Math.min(v, p),
                  p = Math.max(v, p),
                  b <= 1 && 0 <= p ? 1 === b ? i ? null : [s(t, 0 < b ? b : 0, a)] : 0 === p ? i ? null : [s(t, p < 1 ? p : 1, a)] : i && 0 === b && 1 === p ? null : [s(t, 0 < b ? b : 0, a), s(t, p < 1 ? p : 1, a)] : null)
              }(t.point, t.IP.point, e.point, e.IP.point)
                , o = s ? s.length : 0;
              if (0 === o)
                  return 0;
              if (1 === o && (g(t.point, e.point) || g(t.IP.point, e.IP.point)))
                  return 0;
              if (2 === o && t._P === e._P)
                  return 0;
              if (1 === o)
                  return g(t.point, s[0]) || g(t.IP.point, s[0]) || $(t, s[0], r),
                  g(e.point, s[0]) || g(e.IP.point, s[0]) || $(e, s[0], r),
                  1;
              var a = []
                , o = !1
                , s = !1;
              return g(t.point, e.point) ? o = !0 : 1 === P(t, e) ? a.push(e, t) : a.push(t, e),
              g(t.IP.point, e.IP.point) ? s = !0 : 1 === P(t.IP, e.IP) ? a.push(e.IP, t.IP) : a.push(t.IP, e.IP),
              o && s || o ? (e.type = u,
              t.type = e.PP === t.PP ? l : h,
              o && !s && $(a[1].IP, a[0].point, r),
              2) : (s ? $(a[0], a[1].point, r) : a[0] !== a[3].IP ? ($(a[0], a[1].point, r),
              $(a[1], a[2].point, r)) : ($(a[0], a[1].point, r),
              $(a[3].IP, a[2].point, r)),
              3)
          }
          function O(t, e) {
              if (t === e)
                  return 0;
              if (0 !== S(t.point, t.IP.point, e.point) || 0 !== S(t.point, t.IP.point, e.IP.point))
                  return g(t.point, e.point) ? t.FP(e.IP.point) ? -1 : 1 : t.point[0] === e.point[0] ? t.point[1] < e.point[1] ? -1 : 1 : 1 === P(t, e) ? e.RP(t.point) ? -1 : 1 : t.FP(e.point) ? -1 : 1;
              if (t._P !== e._P)
                  return t._P ? -1 : 1;
              var r = t.point
                , n = e.point;
              return r[0] === n[0] && r[1] === n[1] ? (r = t.IP.point,
              n = e.IP.point,
              r[0] === n[0] && r[1] === n[1] ? 0 : t.UP > e.UP ? 1 : -1) : 1 === P(t, e) ? 1 : -1
          }
          function W() {
              this.points = [],
              this.vN = [],
              this.gN = null,
              this.depth = null
          }
          function K(t) {
              for (var s = function(t) {
                  for (var e, i, a = [], r = 0, n = t.length; r < n; r++)
                      ((e = t[r]).left && e.EP || !e.left && e.IP.EP) && a.push(e);
                  for (var o = !1; !o; )
                      for (o = !0,
                      r = 0,
                      n = a.length; r < n; r++)
                          r + 1 < n && 1 === P(a[r], a[r + 1]) && (i = a[r],
                          a[r] = a[r + 1],
                          a[r + 1] = i,
                          o = !1);
                  for (r = 0,
                  n = a.length; r < n; r++)
                      (e = a[r]).lN = r;
                  for (r = 0,
                  n = a.length; r < n; r++)
                      (e = a[r]).left || (i = e.lN,
                      e.lN = e.IP.lN,
                      e.IP.lN = i);
                  return a
              }(t), u = {}, c = [], r = function() {
                  if (!u[o]) {
                      var e = c.length
                        , t = function(a, e, r) {
                          var u, n = new W;
                          return null != a.CP ? (a = (u = a.CP).dN,
                          0 < u.hN ? null != (u = e[a]).gN ? (e[u = u.gN].vN.push(r),
                          n.gN = u,
                          n.depth = e[a].depth) : (e[a].vN.push(r),
                          n.gN = a,
                          n.depth = e[a].depth + 1) : (n.gN = null,
                          n.depth = e[a].depth)) : (n.gN = null,
                          n.depth = 0),
                          n
                      }(s[o], c, e)
                        , r = function(t) {
                          u[t] = !0,
                          s[t].dN = e
                      }
                        , n = o
                        , i = o
                        , a = s[o].point;
                      for (t.points.push(a); ; )
                          if (r(n),
                          r(n = s[n].lN),
                          t.points.push(s[n].point),
                          (n = function(t, e, r, n) {
                              var o, i = t + 1, a = e[t].point, s = e.length;
                              for (i < s && (o = e[i].point); i < s && o[0] === a[0] && o[1] === a[1]; ) {
                                  if (!r[i])
                                      return i;
                                  o = e[++i].point
                              }
                              for (i = t - 1; r[i] && n < i; )
                                  i--;
                              return i
                          }(n, s, u, i)) == i)
                              break;
                      c.push(t)
                  }
              }, o = 0, e = s.length; o < e; o++)
                  r();
              return c
          }
          W.prototype.pN = function() {
              return null == this.gN
          }
          ;
          var Z = Q
            , vt = Q;
          function Q(t, e) {
              if (!(this instanceof Q))
                  return new Q(t,e);
              if (this.data = t || [],
              this.length = this.data.length,
              this.compare = e || tt,
              0 < this.length)
                  for (var r = (this.length >> 1) - 1; 0 <= r; r--)
                      this.zP(r)
          }
          function tt(t, e) {
              return t < e ? -1 : e < t ? 1 : 0
          }
          Q.prototype = {
              push: function(t) {
                  this.data.push(t),
                  this.length++,
                  this.El(this.length - 1)
              },
              pop: function() {
                  if (0 !== this.length) {
                      var t = this.data[0];
                      return this.length--,
                      0 < this.length && (this.data[0] = this.data[this.length],
                      this.zP(0)),
                      this.data.pop(),
                      t
                  }
              },
              GP: function() {
                  return this.data[0]
              },
              El: function(t) {
                  for (var e = this.data, r = this.compare, n = e[t]; 0 < t; ) {
                      var i = t - 1 >> 1
                        , a = e[i];
                      if (0 <= r(n, a))
                          break;
                      e[t] = a,
                      t = i
                  }
                  e[t] = n
              },
              zP: function(t) {
                  for (var e = this.data, r = this.compare, n = this.length >> 1, i = e[t]; t < n; ) {
                      var a = 1 + (t << 1)
                        , o = a + 1
                        , s = e[a];
                      if (o < this.length && r(e[o], s) < 0 && (s = e[a = o]),
                      0 <= r(s, i))
                          break;
                      e[t] = s,
                      t = a
                  }
                  e[t] = i
              }
          },
          Z.default = vt;
          var et = Math.max
            , rt = Math.min
            , nt = 0;
          function it(t, e, r, n, i, a) {
              for (var o = 0, s = t.length - 1; o < s; o++) {
                  var d = t[o]
                    , h = t[o + 1]
                    , f = new v(d,!1,void 0,e)
                    , l = new v(h,!1,f,e);
                  f.IP = l,
                  d[0] === h[0] && d[1] === h[1] || (f.UP = l.UP = r,
                  a || (f.DP = !1,
                  l.DP = !1),
                  0 < P(f, l) ? l.left = !0 : f.left = !0,
                  h = d[0],
                  d = d[1],
                  i[0] = rt(i[0], h),
                  i[1] = rt(i[1], d),
                  i[2] = et(i[2], h),
                  i[3] = et(i[3], d),
                  n.push(f),
                  n.push(l))
              }
          }
          var ot = [];
          function st(t, e, r) {
              var n = null;
              return t.length * e.length == 0 && (r === p ? n = ot : r === m ? n = t : r !== s && r !== d || (n = 0 === t.length ? e : t)),
              n
          }
          function ut(t, e, r, n, i) {
              var a = null;
              return (r[0] > n[2] || n[0] > r[2] || r[1] > n[3] || n[1] > r[3]) && (i === p ? a = ot : i === m ? a = t : i !== s && i !== d || (a = t.concat(e))),
              a
          }
          function ct(t, e, r) {
              var n = st(t = "number" == typeof t[0][0][0] ? [t] : t, e = "number" == typeof e[0][0][0] ? [e] : e, r);
              if (n)
                  return n === ot ? null : n;
              var i = [1 / 0, 1 / 0, -1 / 0, -1 / 0]
                , a = [1 / 0, 1 / 0, -1 / 0, -1 / 0]
                , o = function(t, e, r, n, i) {
                  for (var o, s, f, l, a = new Z(null,P), u = 0, c = t.length; u < c; u++)
                      for (f = 0,
                      l = (o = t[u]).length; f < l; f++)
                          (s = 0 === f) && nt++,
                          it(o[f], !0, nt, a, r, s);
                  for (u = 0,
                  c = e.length; u < c; u++)
                      for (f = 0,
                      l = (o = e[u]).length; f < l; f++)
                          s = 0 === f,
                          (s = i === m ? !1 : s) && nt++,
                          it(o[f], !1, nt, a, n, s);
                  return a
              }(t, e, i, a, r);
              if (n = ut(t, e, i, a, r))
                  return n === ot ? null : n;
              for (var u = K(function(t, n, i, a) {
                  for (var o = new b(O), s = [], u = Math.min(n[2], i[2]); 0 !== t.length; ) {
                      var l, c, f, d, g, h = t.pop();
                      if (s.push(h),
                      a === p && h.point[0] > u || a === m && h.point[0] > n[2])
                          break;
                      h.left ? (f = c = o.Xc(h),
                      c = c !== (l = o.MP()) ? o.NM(c) : null,
                      f = o.next(f),
                      y(h, d = c ? c.key : null, a),
                      f && 2 === L(h, f.key, t) && (y(h, d, a),
                      y(h, f.key, a)),
                      c && 2 === L(c.key, h, t) && (y(d, (g = (g = c) !== l ? o.NM(g) : null) ? g.key : null, a),
                      y(h, d, a))) : (h = h.IP,
                      f = c = o.find(h),
                      c && f && (c = c !== l ? o.NM(c) : null,
                      f = o.next(f),
                      o.remove(h),
                      f && c && L(c.key, f.key, t)))
                  }
                  return s
              }(o, i, a, r)), c = [], f = 0; f < u.length; f++) {
                  var l = u[f];
                  if (l.pN()) {
                      for (var h = [l.points], d = 0; d < l.vN.length; d++) {
                          var v = l.vN[d];
                          h.push(u[v].points)
                      }
                      c.push(h)
                  }
              }
              return c
          }
          vt = {
              VP: s,
              BP: m,
              HP: p,
              WP: d
          };
          t.ZP = function(t, e) {
              return ct(t, e, m)
          }
          ,
          t.qP = function(t, e) {
              return ct(t, e, p)
          }
          ,
          t.YP = vt,
          t.union = function(t, e) {
              return ct(t, e, s)
          }
          ,
          t.xor = function(t, e) {
              return ct(t, e, d)
          }
          ,
          Object.defineProperty(t, "gP", {
              value: !0
          })
      }(e)
  })
    , martinez = unwrapExports(dist)
    , Const = {
      vr: Math.PI / 180,
      mr: 180 / Math.PI,
      yr: 6378137
  };
  function getSphericalCrs(t, e) {
      var r = function(t) {
          switch (t) {
          case "EPSG3857":
              return ProjectionManager.getProjection("EPSG:3857");
          case "EPSG4326":
              return ProjectionManager.getProjection("EPSG:4326")
          }
          return ProjectionManager.getProjection("EPSG3857")
      }(t);
      return {
          project: function(t) {
              return Util.isArray(t) && (t = new LngLat$2(t[0],t[1])),
              r.project(t.lng, t.lat)
          },
          unproject: function(t) {
              return Util.isArray(t) && (t = new Pixel(t[0],t[1])),
              r.unproject(t.x, t.y)
          },
          normalizePoint: function(t) {
              return Util.parseLngLatData(t)
          },
          distance: function(t, e) {
              if (e = this.normalizePoint(e),
              Util.isArray(e))
                  return this.distanceToLine(t, e);
              t = this.normalizePoint(t);
              var r = Const.vr
                , n = Math.cos
                , i = t.lat * r
                , a = t.lng * r
                , t = e.lat * r
                , e = e.lng * r
                , r = 2 * Const.yr
                , a = e - a
                , t = (1 - n(t - i) + (1 - n(a)) * n(i) * n(t)) / 2;
              return r * Math.asin(Math.sqrt(t))
          },
          ringArea: function(t) {
              t = this.normalizeLine(t);
              var e = Const.yr * Const.vr
                , r = 0
                , n = t
                , i = n.length;
              if (i < 3)
                  return 0;
              for (var a = 0; a < i - 1; a += 1) {
                  var o = n[a]
                    , s = n[a + 1]
                    , u = o.lng * e * Math.cos(o.lat * Const.vr)
                    , c = o.lat * e
                    , o = s.lng * e * Math.cos(s.lat * Const.vr);
                  r += u * (s.lat * e) - o * c
              }
              var f = n[a]
                , l = n[0]
                , h = f.lng * e * Math.cos(f.lat * Const.vr)
                , t = f.lat * e
                , f = l.lng * e * Math.cos(l.lat * Const.vr);
              return r += h * (l.lat * e) - f * t,
              .5 * Math.abs(r)
          },
          sphericalCalotteArea: function(t) {
              var e = Const.yr
                , t = e - e * Math.cos(t / e);
              return 2 * Math.PI * e * t
          }
      }
  }
  function getPlanarCrs() {
      return {
          normalizePoint: function(t) {
              return t && t.x && t.y ? [t.x, t.y] : t
          },
          distance: function(t, e) {
              var r = t[0] - e[0]
                , e = t[1] - e[1];
              return Math.sqrt(r * r + e * e)
          },
          project: function(t) {
              return t
          },
          unproject: function(t) {
              return t
          },
          ringArea: function(t) {
              for (var e = [0, 0], r = [0, 0], n = 0, i = t[0], a = t.length, o = 2; o < a; o++) {
                  var s = t[o - 1]
                    , u = t[o];
                  e[0] = i[0] - u[0],
                  e[1] = i[1] - u[1],
                  r[0] = i[0] - s[0],
                  r[1] = i[1] - s[1],
                  n += e[0] * r[1] - e[1] * r[0]
              }
              return n / 2
          }
      }
  }
  function isClockwise(t) {
      for (var e = 0, r = t.length, n = 0; n < r - 1; n++) {
          var i, a = t[n];
          e += ((i = t[n + 1])[0] - a[0]) * (i[1] + a[1])
      }
      return t[r - 1][0] === t[0][0] && t[r - 1][1] === t[0][1] || (a = t[r - 1],
      e += ((i = t[0])[0] - a[0]) * (i[1] + a[1])),
      0 < e
  }
  var GeometryUtilCls = (Bz.prototype.clone = function(t) {
      return new Bz(assign({}, this._opts, t))
  }
  ,
  Bz.prototype.isPoint = function(t) {
      return t && (t instanceof LngLat$2 || Util.isArray(t) && !isNaN(t[0]))
  }
  ,
  Bz.prototype.normalizePoint = function(t) {
      return t
  }
  ,
  Bz.prototype.normalizeLine = function(t) {
      for (var e = [], r = 0, n = t.length; r < n; r++)
          e.push(this.normalizePoint(t[r]));
      return e
  }
  ,
  Bz.prototype.normalizeMultiLines = function(t) {
      for (var e = [], r = 0, n = (t = Util.isArray(t) && this.isPoint(t[0]) ? [t] : t).length; r < n; r++)
          e.push(this.normalizeLine(t[r]));
      return e
  }
  ,
  Bz.prototype.setCrs = function(t) {
      t = t && t.project && t.unproject ? t : "plane" === t ? getPlanarCrs() : getSphericalCrs(t, this._opts.maxZoom),
      assign(this, t)
  }
  ,
  Bz.prototype.distance = function(t, e) {
      throw new Error("distance Not implemented!")
  }
  ,
  Bz.prototype.xr = function(t, e) {
      t = this.normalizeLine(t);
      for (var r = [], n = 0, i = (t = this.isPoint(t[0]) ? t : t[0]).length; n < i; n++)
          r.push(this.project(t[n]));
      return !0 === e ? r = this.makesureClockwise(r) : !1 === e && (r = this.makesureClockwise(r)).reverse(),
      r
  }
  ,
  Bz.prototype.br = function(t) {
      for (var e = [], r = 0, n = t.length; r < n; r++)
          e.push(this.unproject(t[r]));
      return e
  }
  ,
  Bz.prototype.closestOnSegment = function(t, e, r) {
      return r = Coordinate.closestOnSegment(this.project(t), this.xr([e, r])),
      this.unproject(r)
  }
  ,
  Bz.prototype.closestOnLine = function(t, e) {
      for (var r, n = 1 / 0, i = 0, a = (e = this.normalizeLine(e)).length; i < a - 1; i++) {
          var o = this.closestOnSegment(t, e[i], e[i + 1])
            , s = this.distance(t, o);
          s < n && (n = s,
          r = o)
      }
      return r
  }
  ,
  Bz.prototype.distanceToSegment = function(t, e, r) {
      return this.distanceToLine(t, [e, r])
  }
  ,
  Bz.prototype.distanceToLine = function(t, e) {
      e = this.normalizeLine(e);
      for (var r = 1 / 0, n = 0, i = (e = this.isPoint(e[0]) ? e : e[0]).length; n < i - 1; n++)
          var a = this.closestOnSegment(t, e[n], e[n + 1])
            , r = Math.min(r, this.distance(t, a));
      return r
  }
  ,
  Bz.prototype.distanceToPolygon = function(t, e) {
      return this.isPointInRing(t, e) ? 0 : this.distanceToLine(t, e)
  }
  ,
  Bz.prototype.isPointOnSegment = function(t, e, r, n) {
      return (!n && 0 !== n || n < 0) && (n = this._opts.onSegmentTolerance),
      this.distanceToSegment(t, e, r) <= n
  }
  ,
  Bz.prototype.isPointOnLine = function(t, e, r) {
      for (var n = 0, i = (e = this.normalizeLine(e)).length; n < i - 1; n++)
          if (this.isPointOnSegment(t, e[n], e[n + 1], r))
              return !0;
      return !1
  }
  ,
  Bz.prototype.isPointOnRing = function(t, e, r) {
      for (var n = 0, i = (e = this.normalizeLine(e)).length; n < i; n++)
          if (this.isPointOnSegment(t, e[n], e[n === i - 1 ? 0 : n + 1], r))
              return !0;
      return !1
  }
  ,
  Bz.prototype.isPointOnPolygon = function(t, e, r) {
      for (var n = 0, i = (e = this.normalizeMultiLines(e)).length; n < i; n++)
          if (this.isPointOnRing(t, e[n], r))
              return !0;
      return !1
  }
  ,
  Bz.prototype.makesureClockwise = function(t) {
      return isClockwise(t) || (t = [].concat(t)).reverse(),
      t
  }
  ,
  Bz.prototype.makesureAntiClockwise = function(t) {
      return isClockwise(t) && (t = [].concat(t)).reverse(),
      t
  }
  ,
  Bz.prototype.pointInRing = function(t, e, r) {
      for (var n = !1, i = 0; i < e.length && !n; i++)
          if (s(t, e[i][0], r)) {
              for (var a = !1, o = 1; o < e[i].length && !a; )
                  s(t, e[i][o], !r) && (a = !0),
                  o++;
              a || (n = !0)
          }
      function s(t, e, r) {
          for (var n = !1, i = 0, a = (e = e[0][0] === e[e.length - 1][0] && e[0][1] === e[e.length - 1][1] ? e.slice(0, e.length - 1) : e).length - 1; i < e.length; a = i++) {
              var o = e[i][0]
                , s = e[i][1]
                , u = e[a][0]
                , c = e[a][1];
              if (t[1] * (o - u) + s * (u - t[0]) + c * (t[0] - o) == 0 && (o - t[0]) * (u - t[0]) <= 0 && (s - t[1]) * (c - t[1]) <= 0)
                  return !r;
              s > t[1] != c > t[1] && t[0] < (u - o) * (t[1] - s) / (c - s) + o && (n = !n)
          }
          return n
      }
      return n
  }
  ,
  Bz.prototype.isPointInBbox = function(t, e) {
      for (var r = 1 / 0, n = 1 / 0, i = -1 / 0, a = -1 / 0, o = 0; o < e.length; o++)
          var s = e[o]
            , r = Math.min(r, s[0])
            , i = Math.max(i, s[0])
            , n = Math.min(n, s[1])
            , a = Math.max(a, s[1]);
      return t[0] > r && t[0] < i && t[1] > n && t[1] < a
  }
  ,
  Bz.prototype.isPointInRing = function(t, e) {
      return e = this.normalizeLine(e),
      e = this.xr(e, !0),
      Coordinate.ss(this.project(t), e, !1)
  }
  ,
  Bz.prototype.isRingInRing = function(t, e) {
      for (var r = 0, n = t.length; r < n; r++)
          if (!this.isPointInRing(t[r], e))
              return !1;
      return !0
  }
  ,
  Bz.prototype.isRingInRingByOutsea = function(t, e) {
      for (var r = 0, n = t.length; r < n; r++)
          if (this.isPointInRing(t[r], e))
              return !0;
      for (r = 0,
      n = e.length; r < n; r++)
          if (this.isPointInRing(e[r], t))
              return !0;
      return !1
  }
  ,
  Bz.prototype.isRingInRingByMapbox = function(t, e) {
      for (var r = 0, n = t.length; r < n; r++)
          if (!this.isPointInRing(t[r], e))
              return !1;
      return !0
  }
  ,
  Bz.prototype.isRingInRingByMapboxB = function(t, e) {
      for (var r = 0, n = t.length; r < n; r++)
          if (this.isPointInRing(t[r], e))
              return !0;
      return !1
  }
  ,
  Bz.prototype.isPixelRingInRing = function(t, e) {
      for (var r = 0, n = t.length; r < n; r++)
          if (Coordinate.ss(t[r], e, !1))
              return !0;
      return !1
  }
  ,
  Bz.prototype.isPointInPolygon = function(t, e) {
      for (var r, n = 0, i = (e = this.normalizeMultiLines(e)).length; n < i && (r = this.isPointInRing(t, e[n]),
      r = 0 < n ? !r : r); n += 1)
          ;
      return Boolean(r)
  }
  ,
  Bz.prototype.isPointInPolygons = function(t, e) {
      for (var r = 0; r < e.length; r++) {
          for (var n = e[r], i = void 0, a = 0, o = (n = this.normalizeMultiLines(n)).length; a < o && (i = this.isPointInRing(t, n[a]),
          i = 0 < a ? !i : i); a += 1)
              ;
          if (i)
              return !0
      }
      return !1
  }
  ,
  Bz.prototype.doesSegmentsIntersect = function(t, e, r, n) {
      t = (i = this.xr([t, e, r, n]))[0],
      e = i[1],
      r = i[2];
      var a = !1
        , o = ((n = i[3])[0] - r[0]) * (t[1] - r[1]) - (n[1] - r[1]) * (t[0] - r[0])
        , i = (e[0] - t[0]) * (t[1] - r[1]) - (e[1] - t[1]) * (t[0] - r[0]);
      return 0 != (t = (n[1] - r[1]) * (e[0] - t[0]) - (n[0] - r[0]) * (e[1] - t[1])) && (i /= t,
      0 <= (t = o / t) && t <= 1 && 0 <= i && i <= 1 && (a = !0)),
      a
  }
  ,
  Bz.prototype.doesSegmentLineIntersect = function(t, e, r) {
      for (var n = 0, i = (r = this.normalizeLine(r)).length; n < i - 1; n++)
          if (this.doesSegmentsIntersect(t, e, r[n], r[n + 1]))
              return !0;
      return !1
  }
  ,
  Bz.prototype.doesSegmentRingIntersect = function(t, e, r) {
      for (var n = 0, i = (r = this.normalizeLine(r)).length; n < i; n++)
          if (this.doesSegmentsIntersect(t, e, r[n], r[n === i - 1 ? 0 : n + 1]))
              return !0;
      return !1
  }
  ,
  Bz.prototype.doesSegmentPolygonIntersect = function(t, e, r) {
      for (var n = 0, i = (r = this.normalizeMultiLines(r)).length; n < i; n++)
          if (this.doesSegmentRingIntersect(t, e, r[n]))
              return !0;
      return !1
  }
  ,
  Bz.prototype.doesLineLineIntersect = function(t, e) {
      for (var r = 0, n = (t = this.normalizeLine(t)).length; r < n - 1; r++)
          if (this.doesSegmentLineIntersect(t[r], t[r + 1], e))
              return !0;
      return !1
  }
  ,
  Bz.prototype.doesLineRingIntersect = function(t, e) {
      for (var r = 0, n = (t = this.normalizeLine(t)).length; r < n - 1; r++)
          if (this.doesSegmentRingIntersect(t[r], t[r + 1], e))
              return !0;
      return !1
  }
  ,
  Bz.prototype.doesPolygonPolygonIntersect = function(t, e) {
      return !!(this.doesRingRingIntersect(e, t) || this.isRingInRing(t, e) || this.isRingInRing(e, t))
  }
  ,
  Bz.prototype.doesRingRingIntersect = function(t, e) {
      for (var r = 0, n = (t = this.normalizeLine(t)).length; r < n; r++)
          if (this.doesSegmentRingIntersect(t[r], t[r === n - 1 ? 0 : r + 1], e))
              return !0;
      return !1
  }
  ,
  Bz.prototype.along = function(t, e) {
      for (var r = 0, n = 0; n < t.length - 1; n += 1) {
          var i = this.distance(t[n], t[n + 1]);
          if (!(i + r < e)) {
              var a = (e - r) / i;
              return [t[n][0] + a * (t[n + 1][0] - t[n][0]), t[n][1] + a * (t[n + 1][1] - t[n][1]), n]
          }
          r += i
      }
      return null
  }
  ,
  Bz.prototype.gr = function(t, e) {
      for (var a, r = function(t) {
          return (c[0] - o[0]) * (t[1] - o[1]) > (c[1] - o[1]) * (t[0] - o[0])
      }, n = function() {
          var t = [o[0] - c[0], o[1] - c[1]]
            , e = [l[0] - a[0], l[1] - a[1]]
            , r = o[0] * c[1] - o[1] * c[0]
            , n = l[0] * a[1] - l[1] * a[0]
            , i = 1 / (t[0] * e[1] - t[1] * e[0]);
          return [(r * e[0] - n * t[0]) * i, (r * e[1] - n * t[1]) * i]
      }, i = t = this.makesureAntiClockwise(t), o = (e = this.makesureClockwise(e))[e.length - 1], s = 0, u = e.length; s < u; s++) {
          for (var c = e[s], f = i, i = [], l = f[f.length - 1], h = 0, d = f.length; h < d; h++)
              r(a = f[h]) ? (r(l) || i.push(n()),
              i.push(a)) : r(l) && i.push(n()),
              l = a;
          o = c
      }
      return i
  }
  ,
  Bz.prototype.ringRingClip = function(t, e) {
      return t = this.xr(t),
      e = this.xr(e),
      isEqual(t[0], t[t.length - 1]) || t.push(t[0].slice()),
      isEqual(e[0], e[e.length - 1]) || e.push(e[0].slice()),
      (e = martinez.qP([t], [e])) && e[0] && e[0][0] ? this.br(e[0][0]) : []
  }
  ,
  Bz.prototype.ringArea = function(t) {
      throw new Error("distance Not implemented!")
  }
  ,
  Bz.prototype.distanceOfLine = function(t) {
      for (var e = 0, r = 0, n = (t = this.normalizeLine(t)).length; r < n - 1; r++)
          e += this.distance(t[r], t[r + 1]);
      return e
  }
  ,
  Bz.prototype.isClockwise = function(t) {
      return isClockwise(t = this.xr(t))
  }
  ,
  Bz.prototype.typePolygon = function(t) {
      return isArray(t) && isArray(t[0]) ? 2 === t[0][0].length || t[0][0]instanceof LngLat$2 ? "Polygon" : 2 < t[0][0].length && (2 === t[0][0][0].length || t[0][0][0]instanceof LngLat$2) ? "MultiPolygon" : "never" : "never"
  }
  ,
  Bz);
  function Bz(t) {
      this.CLASS_NAME = "AMap.GeometryUtil",
      this._opts = assign({
          onSegmentTolerance: 5,
          crs: "EPSG3857",
          maxZoom: zoomRange[1]
      }, t),
      this.setCrs(this._opts.crs)
  }
  var GeometryUtilInstance = new GeometryUtilCls({})
    , PlaneGeometryUtilInstance = new GeometryUtilCls({});
  PlaneGeometryUtilInstance.setCrs("plane");
  var GeometryUtil = {
      distance: GeometryUtilInstance.distance.bind(GeometryUtilInstance),
      ringArea: GeometryUtilInstance.ringArea.bind(GeometryUtilInstance),
      isClockwise: GeometryUtilInstance.isClockwise.bind(GeometryUtilInstance),
      typePolygon: GeometryUtilInstance.typePolygon.bind(GeometryUtilInstance),
      makesureClockwise: GeometryUtilInstance.makesureClockwise.bind(GeometryUtilInstance),
      makesureAntiClockwise: GeometryUtilInstance.makesureAntiClockwise.bind(GeometryUtilInstance),
      distanceOfLine: GeometryUtilInstance.distanceOfLine.bind(GeometryUtilInstance),
      ringRingClip: GeometryUtilInstance.ringRingClip.bind(GeometryUtilInstance),
      doesSegmentsIntersect: GeometryUtilInstance.doesSegmentsIntersect.bind(GeometryUtilInstance),
      doesSegmentLineIntersect: GeometryUtilInstance.doesSegmentLineIntersect.bind(GeometryUtilInstance),
      doesSegmentRingIntersect: GeometryUtilInstance.doesSegmentRingIntersect.bind(GeometryUtilInstance),
      doesSegmentPolygonIntersect: GeometryUtilInstance.doesSegmentPolygonIntersect.bind(GeometryUtilInstance),
      doesLineLineIntersect: GeometryUtilInstance.doesLineLineIntersect.bind(GeometryUtilInstance),
      doesLineRingIntersect: GeometryUtilInstance.doesLineRingIntersect.bind(GeometryUtilInstance),
      doesRingRingIntersect: GeometryUtilInstance.doesRingRingIntersect.bind(GeometryUtilInstance),
      pointInRing: GeometryUtilInstance.pointInRing.bind(GeometryUtilInstance),
      isPointInRing: GeometryUtilInstance.isPointInRing.bind(GeometryUtilInstance),
      isPointInBbox: GeometryUtilInstance.isPointInBbox.bind(GeometryUtilInstance),
      isRingInRing: GeometryUtilInstance.isRingInRing.bind(GeometryUtilInstance),
      isPointInPolygon: GeometryUtilInstance.isPointInPolygon.bind(GeometryUtilInstance),
      isPointInPolygons: GeometryUtilInstance.isPointInPolygons.bind(GeometryUtilInstance),
      isPointOnSegment: GeometryUtilInstance.isPointOnSegment.bind(GeometryUtilInstance),
      isPointOnLine: GeometryUtilInstance.isPointOnLine.bind(GeometryUtilInstance),
      isPointOnRing: GeometryUtilInstance.isPointOnRing.bind(GeometryUtilInstance),
      isPointOnPolygon: GeometryUtilInstance.isPointOnPolygon.bind(GeometryUtilInstance),
      closestOnSegment: GeometryUtilInstance.closestOnSegment.bind(GeometryUtilInstance),
      closestOnLine: GeometryUtilInstance.closestOnLine.bind(GeometryUtilInstance),
      distanceToSegment: GeometryUtilInstance.distanceToSegment.bind(GeometryUtilInstance),
      distanceToLine: GeometryUtilInstance.distanceToLine.bind(GeometryUtilInstance)
  }
    , PlaneGeometryUtil = {
      distance: PlaneGeometryUtilInstance.distance.bind(PlaneGeometryUtilInstance),
      ringArea: PlaneGeometryUtilInstance.ringArea.bind(PlaneGeometryUtilInstance),
      isClockwise: PlaneGeometryUtilInstance.isClockwise.bind(PlaneGeometryUtilInstance),
      typePolygon: PlaneGeometryUtilInstance.typePolygon.bind(PlaneGeometryUtilInstance),
      makesureClockwise: PlaneGeometryUtilInstance.makesureClockwise.bind(PlaneGeometryUtilInstance),
      makesureAntiClockwise: PlaneGeometryUtilInstance.makesureAntiClockwise.bind(PlaneGeometryUtilInstance),
      distanceOfLine: PlaneGeometryUtilInstance.distanceOfLine.bind(PlaneGeometryUtilInstance),
      ringRingClip: PlaneGeometryUtilInstance.ringRingClip.bind(PlaneGeometryUtilInstance),
      doesSegmentsIntersect: PlaneGeometryUtilInstance.doesSegmentsIntersect.bind(PlaneGeometryUtilInstance),
      doesSegmentLineIntersect: PlaneGeometryUtilInstance.doesSegmentLineIntersect.bind(PlaneGeometryUtilInstance),
      doesSegmentRingIntersect: PlaneGeometryUtilInstance.doesSegmentRingIntersect.bind(PlaneGeometryUtilInstance),
      doesSegmentPolygonIntersect: PlaneGeometryUtilInstance.doesSegmentPolygonIntersect.bind(PlaneGeometryUtilInstance),
      doesLineLineIntersect: PlaneGeometryUtilInstance.doesLineLineIntersect.bind(PlaneGeometryUtilInstance),
      doesLineRingIntersect: PlaneGeometryUtilInstance.doesLineRingIntersect.bind(PlaneGeometryUtilInstance),
      doesRingRingIntersect: PlaneGeometryUtilInstance.doesRingRingIntersect.bind(PlaneGeometryUtilInstance),
      pointInRing: PlaneGeometryUtilInstance.pointInRing.bind(PlaneGeometryUtilInstance),
      isPointInRing: PlaneGeometryUtilInstance.isPointInRing.bind(PlaneGeometryUtilInstance),
      isPointInBbox: PlaneGeometryUtilInstance.isPointInBbox.bind(PlaneGeometryUtilInstance),
      isRingInRing: PlaneGeometryUtilInstance.isRingInRing.bind(PlaneGeometryUtilInstance),
      isPointInPolygon: PlaneGeometryUtilInstance.isPointInPolygon.bind(PlaneGeometryUtilInstance),
      isPointInPolygons: PlaneGeometryUtilInstance.isPointInPolygons.bind(PlaneGeometryUtilInstance),
      isPointOnSegment: PlaneGeometryUtilInstance.isPointOnSegment.bind(PlaneGeometryUtilInstance),
      isPointOnLine: PlaneGeometryUtilInstance.isPointOnLine.bind(PlaneGeometryUtilInstance),
      isPointOnRing: PlaneGeometryUtilInstance.isPointOnRing.bind(PlaneGeometryUtilInstance),
      isPointOnPolygon: PlaneGeometryUtilInstance.isPointOnPolygon.bind(PlaneGeometryUtilInstance),
      closestOnSegment: PlaneGeometryUtilInstance.closestOnSegment.bind(PlaneGeometryUtilInstance),
      closestOnLine: PlaneGeometryUtilInstance.closestOnLine.bind(PlaneGeometryUtilInstance),
      distanceToSegment: PlaneGeometryUtilInstance.distanceToSegment.bind(PlaneGeometryUtilInstance),
      distanceToLine: PlaneGeometryUtilInstance.distanceToLine.bind(PlaneGeometryUtilInstance)
  }
    , LngLat$2 = (wD.from = function(t) {
      return isLngLat(t) ? new wD(t.KL,t.kT) : new wD(t[0],t[1])
  }
  ,
  wD.prototype.setLng = function(t) {
      return this.KL = t,
      this.lng = Math.round(1e6 * t) / 1e6,
      this
  }
  ,
  wD.prototype.setLat = function(t) {
      return this.kT = t,
      this.lat = Math.round(1e6 * t) / 1e6,
      this
  }
  ,
  wD.prototype.getLng = function() {
      return this.lng
  }
  ,
  wD.prototype.getLat = function() {
      return this.lat
  }
  ,
  wD.prototype.equals = function(t) {
      return (t = parseLngLatData(t))instanceof wD && Math.max(Math.abs(this.kT - t.kT), Math.abs(this.KL - t.KL)) <= 1e-9
  }
  ,
  wD.prototype.add = function(t, e) {
      return new wD(this.KL + t.KL,this.kT + t.kT,e)
  }
  ,
  wD.prototype.subtract = function(t, e) {
      return new wD(this.KL - t.KL,this.kT - t.kT,e)
  }
  ,
  wD.prototype.divideBy = function(t, e) {
      return new wD(this.KL / t,this.kT / t,e)
  }
  ,
  wD.prototype.multiplyBy = function(t, e) {
      return new wD(this.KL * t,this.kT * t,e)
  }
  ,
  wD.prototype.offset = function(t, e) {
      if (isNaN(t) || isNaN(e))
          throw Error("valid offset args, require number");
      return t = 2 * Math.asin(Math.sin(Math.round(t) / 12756274) / Math.cos(this.kT * Math.PI / 180)),
      t = this.KL + 180 * t / Math.PI,
      e = 2 * Math.asin(Math.round(e) / 12756274),
      new wD(t,this.kT + 180 * e / Math.PI)
  }
  ,
  wD.prototype.toString = function() {
      return this.lng + "," + this.lat
  }
  ,
  wD.prototype.toArray = function() {
      return [this.lng, this.lat]
  }
  ,
  wD.prototype.toJSON = function() {
      return [this.lng, this.lat]
  }
  ,
  wD.prototype.distanceTo = function(t) {
      return GeometryUtil.distance(this, t)
  }
  ,
  wD.prototype.distance = function(t) {
      return GeometryUtil.distance(this, t)
  }
  ,
  wD);
  function wD(t, e, r) {
      if (void 0 === r && (r = !1),
      this.className = "AMap.LngLat",
      isNumberArray(t) ? (t = parseFloat(t[0]),
      e = parseFloat(t[1])) : (e = parseFloat(e),
      t = parseFloat(t)),
      isNaN(t) || isNaN(e))
          throw Error("Invalid Object: LngLat(" + t + ", " + e + ")");
      !0 !== r && (e = Math.max(Math.min(e, 90), -90),
      t = (t + 180) % 360 + (t < -180 || 180 === t ? 180 : -180)),
      this.kT = e,
      this.KL = t,
      this.lng = Math.round(1e6 * t) / 1e6,
      this.lat = Math.round(1e6 * e) / 1e6,
      this.pos = ProjectionManager.getProjection("EPSG:3857").project(t, e)
  }
  var Size = (VD.prototype.getWidth = function() {
      return this.width
  }
  ,
  VD.prototype.getHeight = function() {
      return this.height
  }
  ,
  VD.prototype.toString = function() {
      return this.width + "," + this.height
  }
  ,
  VD.prototype.toArray = function() {
      return [this.width, this.height]
  }
  ,
  VD);
  function VD(t, e, r) {
      if (void 0 === r && (r = !1),
      this.className = "AMap.Size",
      isNaN(t) || isNaN(e))
          throw new Error("Invalid Object: Pixel(" + t + ", " + e + ")");
      this.width = r ? Math.round(t) : Number(t),
      this.height = r ? Math.round(e) : Number(e)
  }
  var easing = (ZD = {},
  $D = 4,
  aE = 1e-7,
  bE = 10,
  eE = "function" == typeof Float32Array,
  function(a, e, o, r) {
      if (!(0 <= a && a <= 1 && 0 <= o && o <= 1))
          throw new Error("bezier x values must be in [0, 1] range");
      var t = arguments.toString();
      if (ZD[t])
          return ZD[t];
      if (a === e && o === r)
          return mE;
      for (var s = new (eE ? Float32Array : Array)(11), n = 0; n < 11; ++n)
          s[n] = iE(.1 * n, a, o);
      return ZD[t] = function(t) {
          return 0 === t ? 0 : 1 === t ? 1 : iE(function(t) {
              for (var e = 0, r = 1; 10 !== r && s[r] <= t; ++r)
                  e += .1;
              var n = e + (t - s[--r]) / (s[r + 1] - s[r]) * .1
                , i = jE(n, a, o);
              return .001 <= i ? function(t, e, r, n) {
                  for (var i = 0; i < $D; ++i) {
                      var a = jE(e, r, n);
                      if (0 === a)
                          return e;
                      e -= (iE(e, r, n) - t) / a
                  }
                  return e
              }(t, n, a, o) : 0 === i ? n : function(t, e, r, n, i) {
                  for (var a, o, s = 0; 0 < (a = iE(o = e + (r - e) / 2, n, i) - t) ? r = o : e = o,
                  Math.abs(a) > aE && ++s < bE; )
                      ;
                  return o
              }(t, e, e + .1, a, o)
          }(t), e, r)
      }
  }
  ), ZD, $D, aE, bE, eE;
  function fE(t, e) {
      return 1 - 3 * e + 3 * t
  }
  function iE(t, e, r) {
      return ((fE(e, r) * t + (3 * r - 6 * e)) * t + 3 * e) * t
  }
  function jE(t, e, r) {
      return 3 * fE(e, r) * t * t + 2 * (3 * r - 6 * e) * t + 3 * e
  }
  function mE(t) {
      return t
  }
  function getQuadBezierValue(t, e, r, n) {
      if (1 <= t)
          return n;
      var i = 1 - t;
      return i * i * e + 2 * i * t * r + t * t * n
  }
  function cubic(t, e, r, n, i) {
      if (1 <= t)
          return i;
      var a = 3 * (r.pos[0] - e.pos[0])
        , o = 3 * (n.pos[0] - r.pos[0]) - a
        , s = i.pos[0] - e.pos[0] - a - o
        , u = 3 * (r.pos[1] - e.pos[1])
        , r = 3 * (n.pos[1] - r.pos[1]) - u
        , i = i.pos[1] - e.pos[1] - u - r
        , a = s * Math.pow(t, 3) + o * Math.pow(t, 2) + a * t + e.pos[0]
        , e = i * Math.pow(t, 3) + r * Math.pow(t, 2) + u * t + e.pos[1];
      return ProjectionManager.getProjection("EPSG:3857").unproject(a, e)
  }
  function quad(t, e, r, n) {
      return ProjectionManager.getProjection("EPSG:3857").unproject(getQuadBezierValue(t, e.pos[0], r.pos[0], n.pos[0]), getQuadBezierValue(t, e.pos[1], r.pos[1], n.pos[1]))
  }
  function p20CoordsToLngLat(t, e) {
      return Array.isArray(e) && (e = new Pixel(e[0],e[1])),
      t.containerTolnglat(e, 20)
  }
  function getSplitNum(t, e) {
      for (var n = [3, 300], r = Math.max(2, 4), i = 0, a = 0, o = 0, s = t.length; o < s - 1; o++) {
          var u = t[o]
            , c = t[o + 1];
          i += Math.abs(c.pos[0] - u.pos[0]),
          a += Math.abs(c.pos[1] - u.pos[1])
      }
      return Math.min(n[1], Math.max(n[0], Math.round(Math.max(i, a) / e / r)))
  }
  function interpolateCoords(t, e) {
      var r = null;
      switch (e.length) {
      case 3:
          r = quad;
          break;
      case 4:
          r = cubic;
          break;
      default:
          return null
      }
      for (var n = [], i = [0].concat(e), a = 1; a < t - 2; a++)
          i[0] = a / t,
          n.push(r.apply(null, i));
      return n.push(e[e.length - 1]),
      n
  }
  function getCoordsWithControlPoints(t, e, r, n) {
      var i = null;
      return t && r && r.length && ((t = [t]).push.apply(t, r),
      t.push(e),
      t.length,
      i = interpolateCoords(getSplitNum(t, n), t)),
      i || [e]
  }
  var BezierUtil = {
      ag: quad,
      ug: cubic,
      sg: easing,
      xb: function(t, e) {
          for (var r = [], n = 0, i = t.length; n < i; n += 1)
              r.push.apply(r, getCoordsWithControlPoints(t[n - 1], t[n], t[n].controlPoints, e));
          return r
      },
      fg: function(t, e, r, n) {
          for (var i = this.xb(t, e, r, n), a = [], o = 0, s = i.length; o < s; o++)
              a.push(p20CoordsToLngLat(e, i[o]));
          return a
      }
  }, globalInstance = self, lG, lG = exports.zB || (exports.zB = {});
  lG.LITE = "lite",
  lG.LEFT = "left",
  lG.ALL = "all",
  lG.NONE = "";
  var TagMap = {
      2: "all",
      3: "all",
      4: "all",
      5: "all",
      6: "lite",
      7: "all",
      8: "lite",
      9: "all",
      10: "lite",
      11: "lite",
      12: "all",
      13: "all",
      14: "all",
      15: "lite",
      16: "lite",
      17: "all",
      18: "all",
      19: "all",
      20: "all"
  }
    , colorNameDist = {
      aliceblue: "#f0f8ff",
      antiquewhite: "#faebd7",
      aqua: "#00ffff",
      aquamarine: "#7fffd4",
      azure: "#f0ffff",
      beige: "#f5f5dc",
      bisque: "#ffe4c4",
      black: "#000000",
      blanchedalmond: "#ffebcd",
      blue: "#0000ff",
      blueviolet: "#8a2be2",
      brown: "#a52a2a",
      burlywood: "#deb887",
      cadetblue: "#5f9ea0",
      chartreuse: "#7fff00",
      chocolate: "#d2691e",
      coral: "#ff7f50",
      cornflowerblue: "#6495ed",
      cornsilk: "#fff8dc",
      crimson: "#dc143c",
      cyan: "#00ffff",
      darkblue: "#00008b",
      darkcyan: "#008b8b",
      darkgoldenrod: "#b8860b",
      darkgray: "#a9a9a9",
      darkgreen: "#006400",
      darkkhaki: "#bdb76b",
      darkmagenta: "#8b008b",
      darkolivegreen: "#556b2f",
      darkorange: "#ff8c00",
      darkorchid: "#9932cc",
      darkred: "#8b0000",
      darksalmon: "#e9967a",
      darkseagreen: "#8fbc8f",
      darkslateblue: "#483d8b",
      darkslategray: "#2f4f4f",
      darkturquoise: "#00ced1",
      darkviolet: "#9400d3",
      deeppink: "#ff1493",
      deepskyblue: "#00bfff",
      dimgray: "#696969",
      dodgerblue: "#1e90ff",
      firebrick: "#b22222",
      floralwhite: "#fffaf0",
      forestgreen: "#228b22",
      fuchsia: "#ff00ff",
      gainsboro: "#dcdcdc",
      ghostwhite: "#f8f8ff",
      gold: "#ffd700",
      goldenrod: "#daa520",
      grey: "#808080",
      gray: "#808080",
      green: "#008000",
      greenyellow: "#adff2f",
      honeydew: "#f0fff0",
      hotpink: "#ff69b4",
      indianred: "#cd5c5c",
      indigo: "#4b0082",
      ivory: "#fffff0",
      khaki: "#f0e68c",
      lavender: "#e6e6fa",
      lavenderblush: "#fff0f5",
      lawngreen: "#7cfc00",
      lemonchiffon: "#fffacd",
      lightblue: "#add8e6",
      lightcoral: "#f08080",
      lightcyan: "#e0ffff",
      lightgoldenrodyellow: "#fafad2",
      lightgrey: "#d3d3d3",
      lightgreen: "#90ee90",
      lightpink: "#ffb6c1",
      lightsalmon: "#ffa07a",
      lightseagreen: "#20b2aa",
      lightskyblue: "#87cefa",
      lightslategray: "#778899",
      lightsteelblue: "#b0c4de",
      lightyellow: "#ffffe0",
      lime: "#00ff00",
      limegreen: "#32cd32",
      linen: "#faf0e6",
      magenta: "#ff00ff",
      maroon: "#800000",
      mediumaquamarine: "#66cdaa",
      mediumblue: "#0000cd",
      mediumorchid: "#ba55d3",
      mediumpurple: "#9370d8",
      mediumseagreen: "#3cb371",
      mediumslateblue: "#7b68ee",
      mediumspringgreen: "#00fa9a",
      mediumturquoise: "#48d1cc",
      mediumvioletred: "#c71585",
      midnightblue: "#191970",
      mintcream: "#f5fffa",
      mistyrose: "#ffe4e1",
      moccasin: "#ffe4b5",
      navajowhite: "#ffdead",
      navy: "#000080",
      oldlace: "#fdf5e6",
      olive: "#808000",
      olivedrab: "#6b8e23",
      orange: "#ffa500",
      orangered: "#ff4500",
      orchid: "#da70d6",
      palegoldenrod: "#eee8aa",
      palegreen: "#98fb98",
      paleturquoise: "#afeeee",
      palevioletred: "#d87093",
      papayawhip: "#ffefd5",
      peachpuff: "#ffdab9",
      peru: "#cd853f",
      pink: "#ffc0cb",
      plum: "#dda0dd",
      powderblue: "#b0e0e6",
      purple: "#800080",
      rebeccapurple: "#663399",
      red: "#ff0000",
      rosybrown: "#bc8f8f",
      royalblue: "#4169e1",
      saddlebrown: "#8b4513",
      salmon: "#fa8072",
      sandybrown: "#f4a460",
      seagreen: "#2e8b57",
      seashell: "#fff5ee",
      sienna: "#a0522d",
      silver: "#c0c0c0",
      skyblue: "#87ceeb",
      slateblue: "#6a5acd",
      slategray: "#708090",
      snow: "#fffafa",
      springgreen: "#00ff7f",
      steelblue: "#4682b4",
      tan: "#d2b48c",
      teal: "#008080",
      thistle: "#d8bfd8",
      tomato: "#ff6347",
      turquoise: "#40e0d0",
      violet: "#ee82ee",
      wheat: "#f5deb3",
      white: "#ffffff",
      whitesmoke: "#f5f5f5",
      yellow: "#ffff00",
      yellowgreen: "#9acd32"
  }
    , Util = function() {
      var n, o, e, r, i, u = {
          CLASS_NAME: "AMap.Util",
          WorldAxesCenter: {
              x: 0,
              y: 0
          },
          Single: {},
          stamp: (e = !0 === Browser.DW,
          r = 1e5,
          i = "_amap_id",
          function(t) {
              return t[i] = e ? ++r : --r,
              t[i]
          }
          ),
          singlton: function(t) {
              return l.Single[t] || new t
          },
          getOptimalZoom: function(t) {
              return t < Math.floor(t) + .8 ? Math.floor(t) : Math.ceil(t)
          },
          join: function(t, e) {
              if (t.join)
                  return t.join(e);
              var r, n = [];
              for (r in t)
                  t.hasOwnProperty(r) && n.push(r + "=" + (t[r] || ""));
              return n.join(e)
          },
          getGuid: function(t, e) {
              return void 0 === e && (e = 10),
              (t || "") + Math.round(Math.random() * Math.pow(10, e)) + "_" + (new Date).getTime()
          },
          uuid: (o = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),
          function(t, e) {
              var r, a, n = o, i = [];
              if (e = (e = void 0 === e ? 62 : e) || n.length,
              t = void 0 === t ? 0 : t)
                  for (r = 0; r < t; r++)
                      i[r] = n[0 | Math.random() * e];
              else
                  for (i[8] = i[13] = i[18] = i[23] = "-",
                  i[14] = "4",
                  r = 0; r < 36; r++)
                      i[r] || (a = 0 | 16 * Math.random(),
                      i[r] = n[19 === r ? 3 & a | 8 : a]);
              return i.join("")
          }
          ),
          endsWith: function(t, e) {
              return t.endsWith ? t.endsWith(e) : !(t.length < e.length) && t.substr(t.length - e.length) === e
          },
          mg: [],
          gg: 268435456,
          wg: [215440491, 106744817],
          Mg: {
              start: function(e) {
                  e.startTime = new Date,
                  e.jg = [];
                  var n = (new Date).getTime();
                  e.id = l.requestAnimFrame(function r() {
                      var t = (new Date).getTime();
                      e.jg.push(t - n),
                      n = t,
                      e.id = l.requestAnimFrame(r)
                  })
              },
              cancel: function(t) {
                  t.id && l.cancelAnimFrame(t.id)
              },
              stop: function(t) {
                  t.Ag = Date.now() - t.startTime,
                  this.cancel(t),
                  t.Mg = Math.round(1e3 / (t.Ag / (t.jg.length + 1)))
              }
          },
          kg: function(t, e, r, n, i) {
              if (void 0 === i && (i = !1),
              t === e)
                  return e;
              switch (n = void 0 === n ? "linear" : n) {
              case "ease":
                  r = BezierUtil.sg(.25, .1, .25, 1)(r);
                  break;
              case "ease-in":
                  r = BezierUtil.sg(.42, 0, 1, 1)(r);
                  break;
              case "ease-out":
                  r = BezierUtil.sg(0, 0, .58, 1)(r);
                  break;
              case "ease-in-out":
                  r = BezierUtil.sg(.42, 0, .58, 1)(r)
              }
              return t += (e - t) * r,
              i && (t >>= 0),
              t
          },
          createObjectURL: function(t, e) {
              void 0 === e && (e = "text/javascript; charset=utf-8");
              var r = null;
              try {
                  r = (globalInstance.URL || globalInstance.webkitURL).createObjectURL(new Blob([t],{
                      type: e
                  }))
              } catch (t) {
                  r = null
              }
              return r
          },
          revokeObjectURL: function(t) {
              try {
                  (globalInstance.URL || globalInstance.webkitURL).revokeObjectURL(t)
              } catch (t) {}
          },
          Og: function(t) {
              for (var e = {}, r = 0, n = t.length; r < n; r++)
                  e[t[r]] = r;
              return e
          },
          EV: function(t, e) {
              var r = Math.pow(2, e)
                , e = 180 / r;
              return [Math.floor(t[0] / (360 / r)) + r / 2, r / 2 - Math.ceil(t[1] / e)]
          },
          WY: function(t, e, r) {
              void 0 === r && (r = !1);
              var n = [t[0], t[3]]
                , i = [t[2], t[1]]
                , t = this.EV(n, e)
                , n = this.EV(i, e)
                , i = t[0]
                , a = t[1]
                , o = n[0]
                , s = n[1];
              if (r)
                  return {
                      ja: i,
                      Fa: a,
                      Oa: o,
                      Ea: s,
                      z: e
                  };
              this.Pa = {
                  ja: i,
                  Fa: a,
                  Oa: o,
                  Ea: s,
                  z: e
              };
              for (var u = [], c = i; c <= o; c += 1)
                  for (var f = a; f <= s; f += 1)
                      u.push([e, c, f]);
              return u
          },
          xg: function(t) {
              var e = {};
              if (l.is(t, "object"))
                  for (var r in t)
                      t.hasOwnProperty(r) && (e[t[r]] = r);
              return e
          },
          Ig: function(t, e) {
              if (e.length < 5e4)
                  t.push.apply(t, e);
              else
                  for (var r = 0, n = e.length; r < n; r += 1)
                      t.push(e[r])
          },
          clone: function(t) {
              if ("object" != typeof t || null === t)
                  return t;
              if (t.Tg || this.is(t, "Float32Array") || this.is(t, "Uint16Array"))
                  return t;
              var e, r = this.isArray(t) ? [] : {};
              for (e in t)
                  t.hasOwnProperty(e) && (r[e] = l.clone(t[e]));
              return r
          },
          isInteger: function(t) {
              return (0 | t) === t
          },
          vB: function(t) {
              return !isNaN(t)
          },
          setPrototypeOf: "function" == typeof Object.setPrototypeOf ? Object.setPrototypeOf : function(t, e) {
              for (var r in e)
                  t[r] = e[r]
          }
          ,
          isFunction: function(t) {
              return "function" == typeof t
          },
          _g: function(t, e) {
              if (void 0 === e && (e = "webgl"),
              !t)
                  return t;
              for (var r = [], n = 0, i = t.length; n < i; n += 2) {
                  var a = parseInt(t.substr(n, 2), 16);
                  ("webgl" === e || "rgba" === e && 0 === n) && (a = this.format(a / 255, 3)),
                  r.push(a)
              }
              return r.push(r.shift()),
              r
          },
          Sg: function() {},
          keys: "function" == typeof Object.keys ? Object.keys : function(t) {
              var e, r = [];
              for (e in t)
                  t.hasOwnProperty(e) && r.push(e);
              return r
          }
          ,
          map: function(n, i, a) {
              void 0 === a && (a = null);
              var o = [];
              return n && n.length ? (l.Cg(n, function() {
                  for (var t = [], e = 0; e < arguments.length; e++)
                      t[e] = arguments[e];
                  var r = t[1];
                  o[r] = i.apply(a || n, t)
              }),
              o) : n
          },
          forEach: function(t, e) {
              if (t && t.length) {
                  var r = t.length;
                  if (0 < r && (e(t[0], 0),
                  1 < r)) {
                      e(t[1], 1);
                      for (var n = 2; n < r; n++)
                          e(t[n], n)
                  }
              }
          },
          Cg: function(t, e, r) {
              if (void 0 === r && (r = null),
              t && t.length)
                  for (var n = 0, i = t.length; n < i && !1 !== e.call(r, t[n], n, t); n++)
                      ;
          },
          find: function(t, e, r) {
              void 0 === r && (r = null);
              for (var n = 0, i = t.length; n < i; n++)
                  if ("function" == typeof e) {
                      if (e.call(r, t[n], n, t))
                          return t[n]
                  } else if (t[n] === e)
                      return t[n];
              return null
          },
          isDOM: function(t) {
              return "object" == typeof HTMLElement ? t instanceof HTMLElement : t && "object" == typeof t && 1 === t.nodeType && "string" == typeof t.nodeName
          },
          Eg: function(t, e) {
              for (var r, n, i = "ASDFGHJKLQWERTYUIO!sdfghjkleiu3~yr5-P&mq9`%zCN*b=8@^xpVM", a = "v5" < (e = e || "v5") ? (r = i.length,
              512) : (i = i.substr(0, r = 27),
              333), o = [], s = NaN, u = 0, c = t.length; u < c; u++)
                  n = t[u],
                  n = i.indexOf(n),
                  s = isNaN(s) ? n * r : (o.push(s + n - a),
                  NaN);
              return o
          },
          Ng: function(t, e) {
              for (var r = 512 < e.length ? Math.round(Math.pow(e.length, .5)) : e.length, n = Math.ceil(e.length / r), i = 0; i < n; i += 1) {
                  var a = r * i
                    , o = a + r;
                  o > e.length && (o = e.length);
                  for (var s = a; s < o; s += 1)
                      t(e[s])
              }
          },
          Lg: function(t) {
              if (/^rgba\(/.test(t))
                  return this.Dg(t);
              var e = this.colorNameToHex(t)
                , t = e;
              return "#" === e[0] && (3 === (e = e.substring(1)).length && (e = e.replace(/./g, function(t) {
                  return t + t
              })),
              t = this.argbHex2Rgba(8 === e.length ? e : "ff" + e)),
              this.Dg(t)
          },
          colorNameToHex: function(t) {
              return "string" == typeof (t = (t = void 0 === t ? "" : t).toLowerCase()) && colorNameDist[t] || t
          },
          Rg: function(t, e, r) {
              var n = Math.floor(r / 2)
                , i = r - n;
              return [r, t & (n = (1 << n) - 1 << i) | e & (i = (1 << i) - 1), e & n | t & i]
          },
          Pg: function(t) {
              return t ? encodeURIComponent(t) : ""
          },
          getStyle: function(t, e, r, n) {
              var i = t[e].i[r];
              if (void 0 === i)
                  return null;
              if (t = t[e].s,
              "number" == typeof i)
                  return t[i];
              for (; void 0 === i[n.toString()] && !(--n < 3); )
                  ;
              return "number" == typeof (e = i[n.toString()]) ? t[e] : null
          },
          Dg: function(t) {
              return (t = t.split(","))[0] = parseFloat(t[0].split("rgba(")[1]) / 255,
              t[1] = parseFloat(t[1]) / 255,
              t[2] = parseFloat(t[2]) / 255,
              t[3] = parseFloat(t[3]),
              t
          },
          Ug: function(t) {
              return (t = t.split(","))[0] = parseFloat(t[0].split("rgb(")[1]) / 255,
              t[1] = parseFloat(t[1]) / 255,
              t[2] = parseFloat(t[2]) / 255,
              t
          },
          Bg: function(t) {
              return "rgba(" + 255 * t[0] + "," + 255 * t[1] + "," + 255 * t[2] + "," + t[3] + ")"
          },
          color2Rgba: function(t) {
              return this.Bg(this.color2RgbaArray(t))
          },
          color2RgbaArray: function(t) {
              if (t instanceof Array)
                  return 3 == t.length && t.push(1),
                  t;
              var e = this.colorNameToHex(t);
              if (0 == e.indexOf("rgb("))
                  return (r = this.Ug(e)).push(1),
                  r;
              if (0 == e.indexOf("rgba("))
                  return this.Dg(e);
              if (0 != e.indexOf("#")) {
                  if (0 !== e.indexOf("hsla"))
                      return 0 === e.indexOf("hsl") ? (n = t.substr(4).split(","),
                      i = parseInt(n[0], 10) / 360,
                      a = parseInt(n[1], 10) / 100,
                      o = parseInt(n[2], 10) / 100,
                      this.GQ(i, a, o, 1)) : 3 !== e.length ? 6 == e.length ? this.zg(e) : 8 == e.length ? this.qg(e) : void 0 : (o = e.replace(/./g, function(t) {
                          return t + t
                      }),
                      this.zg(o));
                  var n = t.substr(5).split(",")
                    , i = parseInt(n[0], 10) / 360
                    , a = parseInt(n[1], 10) / 100
                    , o = parseInt(n[2], 10) / 100
                    , r = parseFloat(n[3]);
                  return this.GQ(i, a, o, r)
              }
              if (4 !== e.length)
                  return 7 == e.length ? this.zg(e.substr(1)) : 9 == e.length ? (e = e.substr(1),
                  this.qg(e)) : void 0;
              o = e.substr(1).replace(/./g, function(t) {
                  return t + t
              });
              return this.zg(o)
          },
          GQ: function(t, e, r, n) {
              var i, a, o;
              return 0 === e ? i = a = o = r : (i = this.uQ(e = 2 * r - (r = r < .5 ? r * (1 + e) : r + e - r * e), r, t + 1 / 3),
              a = this.uQ(e, r, t),
              o = this.uQ(e, r, t - 1 / 3)),
              [i, a, o, n]
          },
          uQ: function(t, e, r) {
              return r < 0 && (r += 1),
              1 < r && --r,
              r < 1 / 6 ? t + 6 * (e - t) * r : r < .5 ? e : r < 2 / 3 ? t + (e - t) * (2 / 3 - r) * 6 : t
          },
          rgbHex2Rgba: function(t) {
              return t.startsWith("#") && (t = t.slice(1)),
              l.argbHex2Rgba("ff" + t)
          },
          argbHex2Rgba: function(t) {
              for (var e = [], r = 0, n = (t = t.startsWith("#") ? t.slice(1) : t).length; r < n; r += 2)
                  e.push(parseInt(t.substr(r, 2), 16));
              return e.push((e.shift() / 255).toFixed(2)),
              "rgba(" + e.join(",") + ")"
          },
          Opacity2Rgba: function(t, e) {
              var r = e;
              return e && e[3] && t && (e[3] = Math.floor(255 * t)),
              r
          },
          Hex2Rgba: function(t) {
              if ("string" != typeof t)
                  return !1;
              for (var e = [], r = 0, n = t.length; r < n; r += 2)
                  e.push(parseInt(t.substr(r, 2), 16));
              return e.push(parseInt(e.shift())),
              e
          },
          zg: function(t) {
              return this.uE(t + "ff")
          },
          qg: function(t) {
              for (var e = [], r = 0, n = t.length; r < n; r += 2)
                  e.push(parseInt(t.substr(r, 2), 16) / 255);
              return e.push(e.shift()),
              e
          },
          uE: function(t) {
              return [((t = parseInt(t, 16)) >> 24 & 255) / 255, (t >> 16 & 255) / 255, (t >> 8 & 255) / 255, (255 & t) / 255]
          },
          isEmpty: function(t) {
              for (var e in t)
                  if (t.hasOwnProperty(e))
                      return !1;
              return !0
          },
          Wg: function(t, e) {
              return 0 <= e && t.splice(e, 1),
              t
          },
          startsWith: function(t, e) {
              return t.startsWith ? t.startsWith(e) : t.substr(0, e.length) === e
          },
          deleteItemFromArray: function(t, e) {
              return e = l.indexOf(t, e),
              l.Wg(t, e)
          },
          deleteItemFromArrayByIndex: function(t, e) {
              return l.Wg(t, e)
          },
          filter: function(t, r, n) {
              var i = [];
              return l.Cg(t, function(t, e) {
                  r.call(n, t, e) && i.push(t)
              }),
              i
          },
          indexOf: function(t, e) {
              if (!t || !t.length)
                  return -1;
              if (t.indexOf)
                  return t.indexOf(e);
              for (var r = 0; r < t.length; r += 1)
                  if (t[r] === e)
                      return r;
              return -1
          },
          Gg: function(t, e) {
              return t.endsWith ? t.endsWith(e) : !(t.length < e.length) && t.substr(t.length - e.length) == e
          },
          bind: (n = !1,
          Boolean(Function.prototype.bind) && (n = !0),
          function(t, e) {
              var r = 2 < arguments.length ? Array.prototype.slice.call(arguments, 2) : null;
              return n ? r ? (r.unshift(e),
              t.bind.apply(t, r)) : t.bind(e) : function() {
                  return t.apply(e, r || arguments)
              }
          }
          ),
          setOptions: function(t, e) {
              return t.opts = assign({}, t.opts, e = e || {}),
              t.opts
          },
          yn: function(t, e, r) {
              return "function" == typeof e ? this.Hg(t, !0, this.Vg(e, r, 1)) : this.Hg(t, !0)
          },
          Hg: function(r, n, i, t, e, a, o) {
              var s;
              if (void 0 !== (s = i ? e ? i(r, t, e) : i(r) : s))
                  return s;
              if (!this.$g(r))
                  return r;
              var u = this.isArray(r);
              if (u) {
                  if (s = this.Yg(r),
                  !n)
                      return this.Kg(r, s)
              } else {
                  var c = Object.prototype.toString.call(r)
                    , t = "[object Function]" == c;
                  if ("[object Object]" != c && "[object Arguments]" != c && (!t || e))
                      return e ? r : {};
                  if (s = this.Xg(t ? {} : r),
                  !n)
                      return this.baseAssign(s, r)
              }
              o = o || [];
              for (var f = (a = a || []).length; f--; )
                  if (a[f] == r)
                      return o[f];
              return a.push(r),
              o.push(s),
              (u ? this.Zg : this.Qg)(r, function(t, e) {
                  s[e] = l.Hg(t, n, i, e, r, a, o)
              }),
              s
          },
          baseAssign: function(t, e) {
              return null == e ? t : this.tM(e, Object.keys(e), t)
          },
          $g: function(t) {
              var e = typeof t;
              return !!t && ("object" == e || "function" == e)
          },
          rM: function(t) {
              return !!t && "object" == typeof t
          },
          nM: function(t) {
              return "number" == typeof t && -1 < t && t % 1 == 0 && t <= 9007199254740991
          },
          Yg: function(t) {
              var e = t.length
                , r = new Array(e);
              return e && "string" == typeof t[0] && Object.hasOwnProperty.call(t, "index") && (r.index = t.index,
              r.input = t.input),
              r
          },
          Kg: function(t, e) {
              var r = -1
                , n = t.length;
              for (e = e || Array(n); ++r < n; )
                  e[r] = t[r];
              return e
          },
          Xg: function(t) {
              return new (t = "function" == typeof (t = t.constructor) && t instanceof t ? t : Object)
          },
          Vg: function(a, o, t) {
              if ("function" != typeof a)
                  return this.identity;
              if (void 0 === o)
                  return a;
              switch (t) {
              case 1:
                  return function(t) {
                      return a.call(o, t)
                  }
                  ;
              case 3:
                  return function(t, e, r) {
                      return a.call(o, t, e, r)
                  }
                  ;
              case 4:
                  return function(t, e, r, n) {
                      return a.call(o, t, e, r, n)
                  }
                  ;
              case 5:
                  return function(t, e, r, n, i) {
                      return a.call(o, t, e, r, n, i)
                  }
              }
              return function() {
                  return a.apply(o, arguments)
              }
          },
          Zg: function(t, e) {
              for (var r = -1, n = t.length; ++r < n && !1 !== e(t[r], r, t); )
                  ;
              return t
          },
          identity: function(t) {
              return t
          },
          iM: function(u) {
              return function(t, e, r) {
                  for (var n = l.eM(t), i = r(t), a = i.length, o = u ? a : -1; u ? o-- : ++o < a; ) {
                      var s = i[o];
                      if (!1 === e(n[s], s, n))
                          break
                  }
                  return t
              }
          },
          Qg: function(t, e) {
              return l.iM()(t, e, Object.keys)
          },
          eM: function(t) {
              return l.$g(t) ? t : Object(t)
          },
          tM: function(t, e, r) {
              r = r || {};
              for (var n = -1, i = e.length; ++n < i; ) {
                  var a = e[n];
                  r[a] = t[a]
              }
              return r
          },
          oM: function() {
              return !1
          },
          aM: "",
          uM: Date.now ? function() {
              return Date.now()
          }
          : function() {
              return (new Date).getTime()
          }
          ,
          sM: function(t, e, r, n) {
              var i, a, o, s, u, c, f;
              return s = n ? (i = 0,
              o = this.uM,
              function() {
                  if ((a = o()) - i < e)
                      return !1;
                  i = a,
                  t.apply(r, arguments)
              }
              ) : (f = function() {
                  u = !1,
                  c && (s.apply(r, c),
                  c = !1)
              }
              ,
              function() {
                  u ? c = arguments : (u = !0,
                  t.apply(r, arguments),
                  setTimeout(f, e))
              }
              )
          },
          format: function(t, e) {
              return t === t << 0 ? t : +parseFloat(t + "").toFixed(e || 0)
          },
          isArray: Array.isArray || function(t) {
              return this.is(t, "array")
          }
          ,
          is: function(t, e) {
              return Object.prototype.toString.call(t).split(" ")[1].slice(0, -1).toLowerCase() === e.toLowerCase()
          },
          includes: "function" == typeof Array.prototype.includes ? function(t, e) {
              return t.includes(e)
          }
          : function(t, e) {
              return -1 !== this.indexOf(t, e)
          }
          ,
          fM: function(t) {
              var e = 0;
              if (0 === t.length)
                  return e;
              for (var r = 0, n = t.length; r < n; r += 1)
                  e = (e << 5) - e + t.charCodeAt(r),
                  e &= e;
              return e
          },
          hM: function(t, e) {
              e = e ? Math.ceil(parseInt(e.substr(6)) / 24) : 1;
              for (var r = "", n = 0, i = t.length; n < i; n++)
                  r += String.fromCharCode((t.charCodeAt(n) - 256 - e + 65535) % 65535);
              return r
          },
          cM: function(t, e) {
              var r = (t + "").slice(-2)
                , n = (e + "").slice(-2);
              t = t.slice(0, -2),
              e = e.slice(0, -2);
              var i = parseInt((n + r).slice(1))
                , a = Math.ceil(i / 250) % 2 ? 1 : -1
                , i = 1 < i / 500 ? 1 : -1;
              return t -= parseInt("1" + r) / 3e3 * a,
              e -= parseInt("1" + n) / 3e3 * i,
              new LngLat$2(parseFloat(t).toFixed(5),parseFloat(e).toFixed(5))
          },
          vM: function(t) {
              return "undefined" != typeof JSON && JSON.stringify ? l.fM(JSON.stringify(t)) : null
          },
          lM: function(t, e) {
              var r = "_amap_hash";
              return !e && t.hasOwnProperty(r) || (e = l.vM(t)) && (t[r] = e),
              t[r]
          },
          parseLngLatData: function(t) {
              if (l.isArray(t)) {
                  if (!l.isArray(t[0])) {
                      var e = typeof t[0];
                      return "string" == e || "number" == e ? new LngLat$2(t[0],t[1]) : t
                  }
                  for (var r = 0; r < t.length; r += 1)
                      t[r] = l.parseLngLatData(t[r])
              }
              return t
          },
          dM: function(t) {
              for (var e = [], r = 0, n = t.length; r < n; r += 1)
                  e[r] = [t[r].x, t[r].y];
              return e
          },
          bM: function(t) {
              return l.isArray(t) ? new Size(t[0],t[1]) : t
          },
          hp: function(t, e) {
              var r, n = [0, 0], i = l.getOptimalZoom(e.viewState.zoom);
              return t && LocalZoom <= i ? (r = lcs.getSize(),
              i = e.viewState.centerCoord,
              e = lcs.getLocalByCoord([i[0], i[1]]),
              i = t.x - e.x,
              e = t.y - e.y,
              0 != i && (i *= r[0],
              n[0] = i),
              0 != e && (e *= r[1],
              n[1] = e)) : t && (n[0] += t.center[0],
              n[1] += t.center[1]),
              n
          },
          dS: function(t, e) {
              return t >= e[0] && t <= e[1]
          },
          kD: function(t, e, r) {
              return void 0 === r && (r = !1),
              t = (t = void 0 === t ? "" : t).split(",")[0] || "",
              !r && t && e && TagMap[e] || "all"
          },
          VF: function(t, e, r) {
              return !(r = void 0 !== r && r) && t && e && TagMap[e] || "all"
          },
          LD: function(t, e) {
              return !(!t || !e) && (t = this.iN(t),
              this.iN(e) <= t)
          },
          SD: function(t) {
              var e;
              switch (t = void 0 === t ? "all" : t) {
              case "lite":
                  e = 0;
                  break;
              case "left":
                  e = 1;
                  break;
              default:
                  e = 2
              }
              return e
          },
          pW: function(t) {
              var e;
              switch (t = void 0 === t ? 2 : t) {
              case 0:
                  e = exports.zB.LITE;
                  break;
              case 1:
                  e = exports.zB.LEFT;
                  break;
              default:
                  e = exports.zB.ALL
              }
              return e
          },
          iN: function(t) {
              var e = 0;
              switch (t) {
              case "lite":
                  e = 0;
                  break;
              case "left":
                  e = 1;
                  break;
              case "all":
                  e = 2
              }
              return e
          }
      };
      !function() {
          var n = 0;
          function t(t) {
              var e = +new Date
                , r = Math.max(0, (Browser.android ? 50 : 20) - (e - n));
              return n = e + r,
              globalInstance.setTimeout(t, 50)
          }
          function e(t) {
              globalInstance.clearTimeout(t)
          }
          if (Browser.DW) {
              var i = t
                , r = e;
              return u.requestAnimFrame = function(t, e, r, n) {
                  if (!r)
                      return i(function() {
                          e ? l.bind(t, e).call(e, n) : t()
                      });
                  e ? l.bind(t, e).call(e, n) : t()
              }
              ,
              u.cancelAnimFrame = function(t) {
                  t && r.call(globalInstance, t)
              }
          }
          function a(t) {
              for (var e, r = ["webkit", "moz", "o", "ms"], n = 0; n < r.length && !e; n += 1)
                  e = globalInstance[r[n] + t];
              return e
          }
          var o = globalInstance.requestAnimationFrame || a("RequestAnimationFrame") || t
            , s = globalInstance.cancelAnimationFrame || a("CancelAnimationFrame") || a("CancelRequestAnimationFrame") || e;
          u.requestAnimFrame = function(t, e, r, n) {
              if (!r)
                  return o(function() {
                      e ? l.bind(t, e).call(e, n) : t()
                  });
              e ? l.bind(t, e).call(e, n) : t()
          }
          ,
          u.cancelAnimFrame = function(t) {
              t && s.call(globalInstance, t)
          }
      }(),
      Browser.DW || (u.requestIdleCallback = globalInstance.requestIdleCallback ? function(t, e) {
          return globalInstance.requestIdleCallback(t, e)
      }
      : function(t, e) {
          void 0 === e && (e = {});
          var r = l.uM();
          return setTimeout(function() {
              t({
                  didTimeout: !1,
                  timeRemaining: function() {
                      return Math.max(0, 70 - (l.uM() - r))
                  }
              })
          }, e.timeout || 0)
      }
      ,
      u.cancelIdleCallback = globalInstance.cancelIdleCallback ? function(t) {
          return globalInstance.cancelIdleCallback(t)
      }
      : function(t) {
          clearTimeout(t)
      }
      );
      var l = u;
      return l
  }()
    , extendStatics = function(t, e) {
      return (extendStatics = Object.setPrototypeOf || {
          __proto__: []
      }instanceof Array && function(t, e) {
          t.__proto__ = e
      }
      || function(t, e) {
          for (var r in e)
              e.hasOwnProperty(r) && (t[r] = e[r])
      }
      )(t, e)
  };
  function __extends(t, e) {
      function r() {
          this.constructor = t
      }
      extendStatics(t, e),
      t.prototype = null === e ? Object.create(e) : (r.prototype = e.prototype,
      new r)
  }
  function __decorate(t, e, r, n) {
      var i, a = arguments.length, o = a < 3 ? e : null === n ? n = Object.getOwnPropertyDescriptor(e, r) : n;
      if ("object" == typeof Reflect && "function" == typeof Reflect.yV)
          o = Reflect.yV(t, e, r, n);
      else
          for (var s = t.length - 1; 0 <= s; s--)
              (i = t[s]) && (o = (a < 3 ? i(o) : 3 < a ? i(e, r, o) : i(e, r)) || o);
      return 3 < a && o && Object.defineProperty(e, r, o),
      o
  }
  function __spreadArrays() {
      for (var t = 0, e = 0, r = arguments.length; e < r; e++)
          t += arguments[e].length;
      for (var n = Array(t), i = 0, e = 0; e < r; e++)
          for (var a = arguments[e], o = 0, s = a.length; o < s; o++,
          i++)
              n[i] = a[o];
      return n
  }
  exports.Ln = function() {
      return exports.Ln = Object.assign || function(t) {
          for (var e, r = 1, n = arguments.length; r < n; r++)
              for (var i in e = arguments[r])
                  Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]);
          return t
      }
      ,
      exports.Ln.apply(this, arguments)
  }
  ;
  var LabelFormat = (IO.prototype.Ns = function(t, e) {
      e.lang && (this.lang = e.lang)
  }
  ,
  IO.prototype.rV = function(t, e) {
      return t
  }
  ,
  IO.prototype.Ws = function(t, e) {
      for (var r = this.Es, e = labelsUtil.EQ(t = void 0 === t ? "" : t, e = void 0 === e ? [] : e), n = labelsUtil.aQ(e), i = 0; i < n.length; i++)
          r[n[i]] = 1
  }
  ,
  IO.id = "labelFormat",
  IO);
  function IO() {
      this.Fs = {},
      this.Es = {},
      this.Ts = []
  }
  function noop$1() {
      for (var t = [], e = 0; e < arguments.length; e++)
          t[e] = arguments[e]
  }
  var URLObject = "undefined" != typeof window ? window.URL || window.webkitURL || {
      createObjectURL: function() {
          console.error("URL not exist, please use more popular browser")
      }
  } : URL || webkitURL || {
      createObjectURL: function() {
          console.error("URL not exist, please use more popular browser")
      }
  }
    , MockMap = (VO.prototype.has = function(t) {
      return Boolean(this.gV[t])
  }
  ,
  VO.prototype.set = function(t, e) {
      return this.gV[t] = e
  }
  ,
  VO.prototype.get = function(t) {
      return this.gV[t]
  }
  ,
  VO.prototype.pV = function(t) {
      delete this.gV[t]
  }
  ,
  VO.prototype.clear = function() {
      this.gV = {}
  }
  ,
  VO.prototype.forEach = function(t) {
      for (var e in this.gV)
          this.gV.hasOwnProperty(e) && t(this.gV[e])
  }
  ,
  VO);
  function VO() {
      this.gV = {}
  }
  var AdaptorMap = globalInstance.Map || MockMap, SmartTypedArray = (bP.prototype.set = function(t) {
      this.check(t) && (t.length < this.uf ? this.value.set(t) : (this.cf(t.length),
      this.value.set(t),
      this.length = t.length))
  }
  ,
  bP.prototype.check = function(t) {
      if (Array.isArray(t))
          return !0;
      var e = !1;
      switch (this.type) {
      case "uint8":
          e = t instanceof Uint8Array;
          break;
      case "int8":
          e = t instanceof Int8Array;
          break;
      case "uint16":
          e = t instanceof Uint16Array;
          break;
      case "int16":
          e = t instanceof Int16Array;
          break;
      case "uint32":
          e = t instanceof Uint32Array;
          break;
      case "int32":
          e = t instanceof Int32Array;
          break;
      case "float32":
          e = t instanceof Float32Array;
          break;
      case "float64":
          e = t instanceof Float64Array;
          break;
      default:
          e = !1
      }
      return e
  }
  ,
  bP.prototype.subarray = function(t, e) {
      return this.value.subarray(t, e)
  }
  ,
  bP.prototype.ff = function(t) {
      this.uf < t && this.cf(t),
      this.length = t
  }
  ,
  bP.prototype.cf = function(t) {
      var e = this.pf()
        , r = this.value;
      return this.value = new e(t),
      r && this.value.set(r),
      this.uf = t,
      this.value
  }
  ,
  bP.prototype.pf = function() {
      var t = Float32Array;
      switch (this.type) {
      case "uint8":
          t = Uint8Array;
          break;
      case "int8":
          t = Int8Array;
          break;
      case "uint16":
          t = Uint16Array;
          break;
      case "int16":
          t = Int16Array;
          break;
      case "uint32":
          t = Uint32Array;
          break;
      case "int32":
          t = Int32Array;
          break;
      case "float32":
          t = Float32Array;
          break;
      case "float64":
          t = Float64Array;
          break;
      default:
          t = Float32Array
      }
      return t
  }
  ,
  __decorate([InnerClass("SmartTypedArray")], bP)), oP;
  function bP(t, e) {
      void 0 === e && (e = 1024),
      this.type = t,
      this.length = 0,
      this.uf = 0,
      this.value = this.cf(e)
  }
  oP = exports.dY || (exports.dY = {}),
  oP[oP.fontWidth = 0] = "fontWidth",
  oP[oP.fontHeight = 1] = "fontHeight",
  oP[oP.horiBearingX = 2] = "horiBearingX",
  oP[oP.horiBearingY = 3] = "horiBearingY",
  oP[oP.horiAdvance = 4] = "horiAdvance",
  oP[oP.posX = 5] = "posX",
  oP[oP.posY = 6] = "posY",
  oP[oP.iconWidth = 7] = "iconWidth",
  oP[oP.iconHeight = 8] = "iconHeight";
  var INF = 1e20
    , ControlChars = [[0, 31], [127, 159]]
    , ZeroWidthChars = [[8203, 8207]]
    , f = new SmartTypedArray("float64",4096)
    , d = new SmartTypedArray("float64",4096)
    , z = new SmartTypedArray("float64",4096)
    , v = new SmartTypedArray("float64",4096)
    , ua = navigator.userAgent
    , TinySDF = (pP.prototype.bU = function(t) {
      this.size = t || [],
      this.xU(),
      this.mU()
  }
  ,
  pP.prototype.Ce = function(t) {
      var e = this.size
        , r = e[0]
        , n = e[1]
        , i = r * n
        , a = this.Nz;
      if (a) {
          a.clearRect(0, 0, r, n),
          a.fillText(t, this.buffer, this.wU);
          var o = a.getImageData(0, 0, r, n)
            , s = new Uint8ClampedArray(i)
            , u = new Array(9).fill(0);
          if (u[0] = 1,
          u[1] = 1,
          e = t.charCodeAt(0),
          this.RU(e))
              return {
                  bitmap: s,
                  info: u
              };
          for (var c, f = INF, l = INF, h = 0, d = 0, v = 0; v < i; v++) {
              var g = v - (c = Math.floor(v / r)) * r
                , b = o.data[4 * v + 3] / 255;
              0 < b && (c < f && (f = c),
              g < l && (l = g),
              h < c && (h = c),
              d < g && (d = g)),
              this.TU.value[v] = 1 == b ? 0 : 0 == b ? INF : Math.pow(Math.max(0, .5 - b), 2),
              this.AU.value[v] = 1 == b ? INF : 0 == b ? 0 : Math.pow(Math.max(0, b - .5), 2)
          }
          for (a = this.buffer,
          u = this.getWidth(t, d - l),
          t = void 0,
          t = 32 === e ? [6, 6, 0, -21, 9, 0, 0, r, n] : [u, h - f, l, -f + a, u, l - 3, f - 3, r, n],
          edt(this.TU.value, r, n),
          edt(this.AU.value, r, n),
          v = 0; v < i; v++) {
              var p = this.TU.value[v] - this.AU.value[v]
                , p = Math.max(0, Math.min(255, Math.round(255 - 255 * (p / this.radius + this.MU))));
              s[v] = p
          }
          return {
              bitmap: s,
              info: t
          }
      }
      return {}
  }
  ,
  pP.prototype.getWidth = function(t, e) {
      var r;
      switch (t) {
      case "y":
      case "A":
      case "T":
      case "V":
      case "W":
      case "Y":
          r = e;
          break;
      default:
          r = e + 2
      }
      return r
  }
  ,
  pP.prototype.measureText = function(t) {
      return this.Nz.measureText(t)
  }
  ,
  pP.prototype.xU = function() {
      var t = this.size;
      this.canvas || (this.canvas = document.createElement("canvas")),
      this.canvas.width = t[0],
      this.canvas.height = t[1],
      this.Nz = this.canvas.getContext("2d"),
      this.Nz && (this.Nz.font = this.fontWeight + " " + this.fontSize + "px " + this.fontFamily,
      this.Nz.textBaseline = "middle",
      this.Nz.fillStyle = "black")
  }
  ,
  pP.prototype.mU = function() {
      var t = this.size
        , e = t[0];
      (e = e * (t = t[1])) > this.AU.uf && (this.AU.ff(e),
      this.TU.ff(e)),
      e = 0 <= ua.indexOf("Gecko/") || 0 <= ua.indexOf("Windows"),
      this.wU = Math.round(t / 2 * (e ? 1.2 : 1))
  }
  ,
  pP.prototype.RU = function(t) {
      var e = this.SU(t, ControlChars)
        , t = this.SU(t, ZeroWidthChars);
      return e || t
  }
  ,
  pP.prototype.SU = function(t, e) {
      for (var r = 0, n = e; r < n.length; r++) {
          var i = n[r];
          if (t >= i[0] && t <= i[1])
              return !0
      }
  }
  ,
  pP);
  function pP(t, e, r, n, i, a, o) {
      this.fontSize = t || 24,
      this.buffer = void 0 === r ? 3 : r,
      this.MU = i || .25,
      this.fontFamily = a || "sans-serif",
      this.fontWeight = o || "lighter",
      this.radius = n || 8,
      this.size = e,
      this.xU(),
      n = e[0] * e[1],
      this.TU = new SmartTypedArray("float64",n),
      this.AU = new SmartTypedArray("float64",n),
      n = 0 <= ua.indexOf("Gecko/") || 0 <= ua.indexOf("Windows"),
      this.wU = Math.round(e[1] / 2 * (n ? 1.2 : 1))
  }
  function expandTypeArray(t) {
      f.ff(t),
      d.ff(t),
      z.ff(t),
      v.ff(t)
  }
  function edt(t, e, r) {
      f.uf < r && expandTypeArray(r);
      for (var n = 0; n < e; n++) {
          for (var i = 0; i < r; i++)
              f.value[i] = t[i * e + n];
          for (edt1d(f.value, d.value, v.value, z.value, r),
          i = 0; i < r; i++)
              t[i * e + n] = d.value[i]
      }
      for (f.uf < e && expandTypeArray(r),
      i = 0; i < r; i++) {
          for (n = 0; n < e; n++)
              f.value[n] = t[i * e + n];
          for (edt1d(f.value, d.value, v.value, z.value, e),
          n = 0; n < e; n++)
              t[i * e + n] = Math.sqrt(d.value[n])
      }
  }
  function edt1d(t, e, r, n, i) {
      n[r[0] = 0] = -INF,
      n[1] = +INF;
      for (var a = 1, o = 0; a < i; a++) {
          for (var s = (t[a] + a * a - (t[r[o]] + r[o] * r[o])) / (2 * a - 2 * r[o]); s <= n[o]; )
              o--,
              s = (t[a] + a * a - (t[r[o]] + r[o] * r[o])) / (2 * a - 2 * r[o]);
          r[++o] = a,
          n[o] = s,
          n[o + 1] = +INF
      }
      for (o = a = 0; a < i; a++) {
          for (; n[o + 1] < a; )
              o++;
          e[a] = (a - r[o]) * (a - r[o]) + t[r[o]]
      }
  }
  var LangConf = {
      ch: {
          type: "ch",
          size: [32, 32],
          fontSize: 24,
          name: "中文简体"
      },
      en: {
          type: "en",
          size: [32, 32],
          fontSize: 24,
          name: "英文"
      },
      th: {
          type: "th",
          size: [32, 32],
          fontSize: 24,
          name: "泰语"
      },
      my: {
          type: "my",
          size: [56, 56],
          fontSize: 24,
          name: "缅甸语"
      },
      ja: {
          type: "ja",
          size: [32, 32],
          fontSize: 24,
          name: "日文"
      },
      km: {
          type: "km",
          size: [40, 40],
          fontSize: 24,
          name: "高棉语"
      },
      PU: {
          type: "lao",
          size: [40, 40],
          fontSize: 24,
          name: "老挝语"
      },
      $U: {
          type: "arabic",
          size: [40, 40],
          fontSize: 24,
          name: "阿拉伯语"
      },
      default: {
          type: "ch",
          size: [32, 32],
          fontSize: 24,
          name: "汉语"
      }
  }
    , Lang = (HQ.prototype.Ce = function(t) {
      return this.type === LangConf.PU.type ? (this.width = 10 * Math.floor(this.NU.measureText(t).width / 10) + 10 + LangConf.PU.fontSize / 2,
      this.NU.bU([this.width, this.height])) : (this.type === LangConf.my.type || this.type === LangConf.PU.type || this.type === LangConf.th.type || this.type === LangConf.$U.type || this.type === LangConf.km.type) && 1 < t.length && (this.width = Math.floor(this.CU.size[0] * t.length * .5),
      this.NU.bU([this.width, this.height])),
      this.NU.Ce(t)
  }
  ,
  HQ);
  function HQ(t) {
      var r = (e = this.CU = t).type
        , t = e.size
        , e = e.fontSize;
      this.type = r,
      r = this.width = t[0],
      t = this.height = t[1],
      this.NU = new TinySDF(e,[r, t],(r - e) / 2,8,.25,"PingFang SC","normal")
  }
  var LangManager = (QQ.gG = function(t) {
      return t = t.split("|"),
      t = parseInt(t[0], 10),
      this.IU(t)
  }
  ,
  QQ.kU = function(t) {
      for (var e = [], r = 0; r < t.length; r++)
          e.push(t.charCodeAt(r));
      return QQ.gG(e.join("|"))
  }
  ,
  QQ.LU = function(t) {
      return t = QQ.kU(t),
      -1 !== QQ.EU.indexOf(t)
  }
  ,
  QQ.IU = function(t) {
      return 32 < t && t < 591 ? "en" : 4096 <= t && t <= 4255 ? "my" : 3584 <= t && t <= 3711 ? "th" : 6016 <= t && t <= 6143 ? "km" : 3712 <= t && t <= 3839 ? "lao" : 1536 <= t && t <= 1791 ? "arabic" : "ch"
  }
  ,
  QQ.prototype.D$ = function(t) {
      var e, r = this.OU[t = void 0 === t ? "ch" : t];
      return r || (e = LangConf[t] || LangConf.default,
      r = new Lang(e),
      this.OU[t] = r),
      r
  }
  ,
  QQ.EU = [LangConf.my.type, LangConf.km.type, LangConf.PU.type],
  QQ);
  function QQ() {
      this.OU = {}
  }
  var CHN = [["90.398619", "47.62125"], ["90.493569", "47.512157"], ["90.491338", "47.430787"], ["90.552986", "47.391174"], ["90.522859", "47.318461"], ["90.584915", "47.224989"], ["90.782025", "47.019194"], ["90.923517", "46.97996"], ["90.986624", "46.807403"], ["91.082926", "46.722064"], ["91.051812", "46.596604"], ["91.100242", "46.564068"], ["91.102624", "46.537196"], ["90.935125", "46.300398"], ["91.032801", "46.126363"], ["91.055181", "46.011658"], ["90.741148", "45.713536"], ["90.699563", "45.544726"], ["90.700228", "45.504993"], ["90.795887", "45.449956"], ["90.832257", "45.31629"], ["90.919719", "45.26871"], ["90.920899", "45.225065"], ["91.136978", "45.244316"], ["91.253943", "45.164928"], ["91.372068", "45.142003"], ["91.45689", "45.18485"], ["91.624753", "45.098124"], ["92.062061", "45.11548"], ["92.497694", "45.030848"], ["92.887666", "45.075869"], ["93.513157", "44.997233"], ["94.22699", "44.694971"], ["94.374082", "44.542037"], ["94.620202", "44.47394"], ["94.737532", "44.366876"], ["95.002041", "44.282908"], ["95.42701", "44.324539"], ["95.440292", "44.292217"], ["95.365491", "44.054053"], ["95.549126", "44.026335"], ["95.883651", "43.431746"], ["95.911953", "43.287656"], ["96.385653", "42.919774"], ["96.41151", "42.75927"], ["97.176454", "42.824161"], ["98.198333", "42.682435"], ["99.505985", "42.597497"], ["99.964106", "42.676693"], ["100.259793", "42.666107"], ["100.320604", "42.718863"], ["100.867753", "42.700052"], ["101.814637", "42.530852"], ["102.090733", "42.250567"], ["102.451458", "42.173439"], ["102.716911", "42.181644"], ["103.426452", "41.910629"], ["103.858223", "41.830321"], ["104.537873", "41.903108"], ["104.55755", "41.881352"], ["104.554117", "41.69046"], ["104.929798", "41.682608"], ["105.010371", "41.620463"], ["105.220141", "41.778353"], ["105.732529", "41.977008"], ["106.776853", "42.319288"], ["107.167833", "42.354897"], ["107.458928", "42.487147"], ["107.937949", "42.433308"], ["108.241189", "42.489425"], ["108.84269", "42.425722"], ["109.022141", "42.487574"], ["109.290662", "42.465227"], ["109.534657", "42.500548"], ["109.723763", "42.60669"], ["110.100045", "42.671172"], ["110.420666", "42.80617"], ["111.005001", "43.354829"], ["111.446257", "43.521761"], ["111.555004", "43.519925"], ["111.780481", "43.697712"], ["111.925235", "43.719055"], ["111.936243", "43.796237"], ["111.863286", "43.902314"], ["111.643689", "44.039247"], ["111.386948", "44.360034"], ["111.610923", "44.793044"], ["111.742544", "44.988614"], ["111.9942", "45.118751"], ["112.435906", "45.103062"], ["112.61512", "44.956037"], ["112.806373", "44.882816"], ["113.624854", "44.775834"], ["113.896701", "44.9424"], ["114.104283", "44.984106"], ["114.437113", "45.233044"], ["114.543629", "45.41585"], ["114.742713", "45.46746"], ["114.977202", "45.40645"], ["115.36123", "45.421513"], ["115.688202", "45.487095"], ["116.023886", "45.712008"], ["116.163919", "45.717567"], ["116.251037", "45.785617"], ["116.213851", "45.874652"], ["116.246574", "45.98171"], ["116.56904", "46.316673"], ["116.83033", "46.413023"], ["117.353361", "46.390324"], ["117.41533", "46.528251"], ["117.39222", "46.582448"], ["117.411768", "46.610108"], ["117.618878", "46.628442"], ["117.72387", "46.549579"], ["118.312433", "46.768455"], ["118.774374", "46.71799"], ["118.828619", "46.795917"], ["118.912926", "46.804113"], ["118.941979", "46.764971"], ["119.028625", "46.769292"], ["119.119864", "46.669494"], ["119.724391", "46.623078"], ["119.791059", "46.707882"], ["119.884572", "46.701717"], ["119.896224", "46.880494"], ["119.836485", "46.899381"], ["119.742007", "47.13776"], ["119.30249", "47.404711"], ["119.315214", "47.461827"], ["119.134262", "47.517476"], ["119.10804", "47.64174"], ["118.755577", "47.747779"], ["118.55396", "47.96464"], ["118.177657", "48.02096"], ["117.82558", "47.987997"], ["117.388809", "47.612384"], ["117.082887", "47.796869"], ["116.816533", "47.867783"], ["116.452289", "47.808327"], ["116.270714", "47.845797"], ["115.938377", "47.653883"], ["115.559971", "47.900966"], ["115.500727", "48.161305"], ["115.791907", "48.279437"], ["115.776629", "48.537807"], ["116.042275", "48.826715"], ["116.024444", "48.890046"], ["116.709459", "49.880215"], ["117.07866", "49.723328"], ["117.482128", "49.648667"], ["117.801998", "49.554185"], ["117.858689", "49.620567"], ["118.068073", "49.643304"], ["118.210831", "49.759243"], ["118.358674", "49.80286"], ["118.37378", "49.853853"], ["118.468623", "49.857768"], ["118.559926", "49.957101"], ["119.082034", "50.01451"], ["119.311051", "50.169532"], ["119.328389", "50.327724"], ["119.175332", "50.320094"], ["119.103534", "50.373674"], ["119.103642", "50.409488"], ["119.224019", "50.469114"], ["119.262214", "50.625767"], ["119.470096", "50.763554"], ["119.480245", "50.910299"], ["119.734497", "51.106944"], ["119.73542", "51.228925"], ["119.789064", "51.243368"], ["119.787948", "51.298691"], ["119.896417", "51.365189"], ["119.889615", "51.410731"], ["119.950318", "51.426267"], ["120.067241", "51.699773"], ["120.632029", "51.963004"], ["120.755196", "52.16206"], ["120.733974", "52.23734"], ["120.60276", "52.318868"], ["120.688398", "52.529211"], ["120.459208", "52.615218"], ["120.046556", "52.554881"], ["120.004778", "52.785297"], ["120.275145", "52.889292"], ["120.877526", "53.323248"], ["121.231921", "53.310391"], ["122.338707", "53.534212"], ["122.443142", "53.474191"], ["122.84101", "53.486577"], ["123.278553", "53.592823"], ["123.480492", "53.533829"], ["123.518364", "53.587614"], ["123.901491", "53.509565"], ["124.129157", "53.379309"], ["124.260864", "53.404185"], ["124.447374", "53.252351"], ["124.696798", "53.233398"], ["124.854212", "53.143501"], ["124.877429", "53.19179"], ["125.14374", "53.233437"], ["125.500989", "53.129213"], ["125.53472", "53.084642"], ["125.631731", "53.108131"], ["125.776978", "53.000452"], ["125.732839", "52.906456"], ["125.842016", "52.927481"], ["125.973551", "52.795444"], ["126.049747", "52.829373"], ["126.137295", "52.788424"], ["126.136093", "52.7501"], ["126.082878", "52.727183"], ["126.094744", "52.66376"], ["126.01078", "52.632295"], ["126.225078", "52.557751"], ["126.227546", "52.502887"], ["126.28664", "52.498733"], ["126.378071", "52.405299"], ["126.365626", "52.334723"], ["126.460233", "52.313556"], ["126.457937", "52.278438"], ["126.370797", "52.21752"], ["126.587327", "52.146539"], ["126.544647", "52.022831"], ["126.483493", "52.004144"], ["126.489866", "51.963387"], ["126.757379", "51.72942"], ["126.769931", "51.638237"], ["126.737959", "51.604012"], ["126.870396", "51.541384"], ["126.8313", "51.449554"], ["126.939726", "51.411373"], ["126.952021", "51.35238"], ["127.007918", "51.339647"], ["126.930671", "51.194554"], ["126.950047", "51.077214"], ["127.328668", "50.761993"], ["127.324612", "50.674039"], ["127.399564", "50.585975"], ["127.336199", "50.480736"], ["127.39435", "50.441709"], ["127.374866", "50.346296"], ["127.622938", "50.242265"], ["127.624762", "50.159938"], ["127.524126", "50.053819"], ["127.569466", "49.832087"], ["127.686474", "49.798414"], ["127.716987", "49.69577"], ["127.838395", "49.617717"], ["128.185065", "49.56898"], ["128.533065", "49.633229"], ["128.791094", "49.618148"], ["128.84167", "49.562161"], ["128.811865", "49.506248"], ["129.022107", "49.485245"], ["129.11165", "49.389985"], ["129.230032", "49.429552"], ["129.343135", "49.392234"], ["129.383497", "49.461849"], ["129.526126", "49.451932"], ["129.593332", "49.316758"], ["129.745059", "49.313625"], ["129.972146", "49.057136"], ["130.243692", "48.89923"], ["130.444579", "48.939218"], ["130.526934", "48.889044"], ["130.693552", "48.907086"], ["130.705612", "48.869994"], ["130.580449", "48.630526"], ["130.630317", "48.609845"], ["130.648105", "48.52472"], ["130.790884", "48.525345"], ["130.778868", "48.413864"], ["130.875106", "48.300724"], ["130.708423", "48.108792"], ["130.914073", "47.945556"], ["131.01546", "47.736076"], ["131.552374", "47.750448"], ["131.621768", "47.692216"], ["131.711934", "47.740348"], ["131.958075", "47.703033"], ["131.995368", "47.741041"], ["132.235458", "47.739381"], ["132.340472", "47.796162"], ["132.546873", "47.750881"], ["132.655685", "47.89209"], ["132.654505", "47.979308"], ["132.811511", "47.967327"], ["133.097413", "48.158185"], ["133.473394", "48.128346"], ["133.728504", "48.281365"], ["134.199908", "48.411499"], ["134.519091", "48.448618"], ["134.797053", "48.402511"], ["134.903462", "48.476549"], ["135.111473", "48.465979"], ["135.087461", "48.366044"], ["134.70854", "48.235879"], ["134.705815", "48.142967"], ["134.587133", "47.991745"], ["134.802439", "47.732613"], ["134.805079", "47.701502"], ["134.584837", "47.454022"], ["134.327302", "47.405829"], ["134.203448", "47.309543"], ["134.189801", "47.25835"], ["134.258273", "47.190339"], ["134.25029", "47.096963"], ["134.160018", "47.066453"], ["134.091868", "46.968583"], ["134.042215", "46.633997"], ["133.892806", "46.477753"], ["133.978872", "46.404235"], ["133.938468", "46.35728"], ["133.943124", "46.251663"], ["133.734856", "46.143924"], ["133.77584", "46.068467"], ["133.698828", "45.924364"], ["133.509421", "45.823745"], ["133.533154", "45.779212"], ["133.488886", "45.719859"], ["133.513906", "45.69461"], ["133.496869", "45.599732"], ["133.229721", "45.489276"], ["133.168674", "45.414886"], ["133.124621", "45.258199"], ["133.158975", "45.105773"], ["132.946351", "44.989767"], ["131.996377", "45.226214"], ["131.893723", "45.301592"], ["131.80903", "45.186922"], ["131.72307", "45.208468"], ["131.688416", "45.166214"], ["131.716461", "45.107939"], ["131.507506", "44.942491"], ["131.131804", "44.90387"], ["131.021662", "44.839439"], ["131.137726", "44.723122"], ["131.338398", "44.056058"], ["131.273661", "43.974086"], ["131.248341", "43.566337"], ["131.344342", "43.514183"], ["131.346252", "43.391702"], ["131.236002", "43.22857"], ["131.242955", "43.131057"], ["131.13749", "43.018486"], ["131.168904", "42.923466"], ["131.065779", "42.901952"], ["131.05005", "42.834641"], ["130.673962", "42.819219"], ["130.46123", "42.731347"], ["130.617421", "42.685874"], ["130.650616", "42.595365"], ["130.604267", "42.509264"], ["130.661752", "42.412289"], ["130.553477", "42.421191"], ["130.507536", "42.571366"], ["130.42958", "42.523293"], ["130.416105", "42.590452"], ["130.235238", "42.692151"], ["130.237405", "42.873951"], ["130.125611", "42.876169"], ["130.075765", "42.911319"], ["130.092008", "42.956423"], ["129.933178", "42.975108"], ["129.878311", "42.92378"], ["129.795163", "42.719399"], ["129.815032", "42.601778"], ["129.735103", "42.411401"], ["129.607751", "42.418118"], ["129.55415", "42.330996"], ["129.383025", "42.403749"], ["129.268527", "42.323223"], ["129.222093", "42.257635"], ["129.2434", "42.19201"], ["128.992774", "42.075243"], ["128.959644", "41.997184"], ["128.121765", "41.974471"], ["128.183949", "41.746614"], ["128.336234", "41.608881"], ["128.268621", "41.434008"], ["128.127944", "41.337429"], ["128.00482", "41.417516"], ["127.65285", "41.377517"], ["127.537794", "41.447986"], ["127.248116", "41.454805"], ["127.234962", "41.492217"], ["127.08566", "41.544545"], ["127.128081", "41.592273"], ["127.012339", "41.679643"], ["127.035706", "41.702541"], ["126.914964", "41.778689"], ["126.809177", "41.669562"], ["126.74607", "41.691325"], ["126.612003", "41.629975"], ["126.529799", "41.412013"], ["126.562243", "41.368516"], ["126.557908", "41.33825"], ["126.45328", "41.325763"], ["126.3043", "41.139979"], ["126.148946", "41.070584"], ["126.132917", "40.990783"], ["126.041744", "40.924117"], ["126.041787", "40.876401"], ["125.721896", "40.840697"], ["125.681319", "40.80754"], ["125.712733", "40.774611"], ["125.686641", "40.761853"], ["125.582743", "40.75319"], ["125.423162", "40.624246"], ["125.310595", "40.636606"], ["125.022783", "40.521123"], ["125.06057", "40.46396"], ["124.907556", "40.445935"], ["124.374311", "40.078794"], ["124.388452", "39.905638"], ["123.741782", "39.10294"], ["123.282201", "38.058466"], ["124.24299", "31.368588"], ["124.714351", "29.508006"], ["125.072136", "25.859069"], ["124.935837", "25.676612"], ["123.836839", "25.5127"], ["122.751321", "24.515956"], ["121.947788", "22.070621"], ["121.867355", "21.383021"], ["119.827087", "18.177352"], ["119.026527", "16.873489"], ["119.11665", "15.951676"], ["119.101406", "14.063252"], ["119.100623", "12.209516"], ["119.07742", "11.23357"], ["116.011301", "7.678721"], ["114.941852", "6.182877"], ["114.229887", "5.47862"], ["113.86269", "4.692236"], ["112.795642", "3.695169"], ["111.953841", "3.231846"], ["109.894631", "3.714037"], ["108.659956", "4.748032"], ["107.925439", "5.91737"], ["107.96348", "6.895899"], ["108.555028", "9.28242"], ["110.128544", "11.338543"], ["109.983314", "12.44102"], ["109.806102", "13.535124"], ["109.636428", "14.636855"], ["109.78629", "15.402577"], ["109.449813", "15.723154"], ["108.117871", "17.258818"], ["107.310076", "18.842045"], ["107.374728", "19.467179"], ["108.051095", "20.114414"], ["108.328478", "21.187373"], ["108.278139", "21.403412"], ["108.107378", "21.47839"], ["107.943356", "21.509097"], ["107.849844", "21.619412"], ["107.547355", "21.55724"], ["107.470751", "21.571209"], ["107.451932", "21.615722"], ["107.357798", "21.570152"], ["107.289755", "21.702532"], ["107.207551", "21.682454"], ["106.998789", "21.79714"], ["107.015655", "21.907972"], ["106.951239", "21.893876"], ["106.768184", "21.978429"], ["106.703854", "21.935422"], ["106.674027", "21.941175"], ["106.664565", "22.266461"], ["106.643493", "22.30484"], ["106.538715", "22.328641"], ["106.53142", "22.460275"], ["106.592939", "22.622033"], ["106.708553", "22.615477"], ["106.793547", "22.794758"], ["106.548972", "22.899047"], ["106.304634", "22.830954"], ["106.190543", "22.951201"], ["106.088791", "22.966118"], ["105.867991", "22.889816"], ["105.712488", "23.033058"], ["105.550311", "23.045755"], ["105.530806", "23.163759"], ["105.330691", "23.346393"], ["105.249667", "23.237422"], ["105.089657", "23.231409"], ["104.951169", "23.149476"], ["104.843495", "23.101267"], ["104.893084", "22.94393"], ["104.747257", "22.79551"], ["104.567764", "22.813411"], ["104.371855", "22.65974"], ["104.249053", "22.720536"], ["104.237015", "22.806132"], ["104.137495", "22.783462"], ["104.078336", "22.740585"], ["104.017096", "22.520843"], ["103.962035", "22.492019"], ["103.666692", "22.741534"], ["103.525093", "22.580551"], ["103.458703", "22.648987"], ["103.394201", "22.751092"], ["103.341286", "22.767397"], ["103.306804", "22.661878"], ["103.215652", "22.621855"], ["103.205309", "22.536362"], ["103.107505", "22.486567"], ["103.076606", "22.416444"], ["102.91784", "22.456309"], ["102.840786", "22.583305"], ["102.610223", "22.696625"], ["102.558017", "22.673838"], ["102.493515", "22.738071"], ["102.424293", "22.676273"], ["102.446694", "22.621241"], ["102.327948", "22.511268"], ["102.278531", "22.386786"], ["102.142661", "22.36867"], ["102.03475", "22.427651"], ["101.942096", "22.415036"], ["101.8765", "22.355136"], ["101.764791", "22.472926"], ["101.700847", "22.453176"], ["101.694624", "22.349917"], ["101.579332", "22.223979"], ["101.631925", "21.988099"], ["101.718335", "21.962549"], ["101.79863", "21.848016"], ["101.778824", "21.73654"], ["101.856952", "21.62392"], ["101.847124", "21.595911"], ["101.773932", "21.558438"], ["101.760328", "21.349162"], ["101.862724", "21.239522"], ["101.764727", "21.115389"], ["101.663511", "21.164623"], ["101.587808", "21.146813"], ["101.574161", "21.209359"], ["101.53264", "21.221881"], ["101.293538", "21.149214"], ["101.203866", "21.206559"], ["101.216612", "21.289294"], ["101.114173", "21.403592"], ["101.183052", "21.497378"], ["101.111941", "21.560533"], ["101.095719", "21.734009"], ["100.901892", "21.659343"], ["100.747526", "21.494902"], ["100.586185", "21.423588"], ["100.468576", "21.433695"], ["100.414267", "21.504705"], ["100.248806", "21.434534"], ["100.115855", "21.481604"], ["100.078626", "21.591362"], ["100.11579", "21.654357"], ["100.010068", "21.666462"], ["99.916813", "21.811046"], ["99.968591", "21.972539"], ["99.950867", "22.023392"], ["99.699748", "22.008512"], ["99.585378", "22.083453"], ["99.19384", "22.094388"], ["99.129961", "22.147006"], ["99.24403", "22.347694"], ["99.226069", "22.407775"], ["99.348979", "22.505302"], ["99.289627", "22.751963"], ["99.429595", "22.858203"], ["99.422858", "22.95454"], ["99.521735", "22.955884"], ["99.488432", "23.051046"], ["99.336512", "23.101188"], ["99.258964", "23.048934"], ["99.10449", "23.057463"], ["98.99924", "23.151389"], ["98.858693", "23.167152"], ["98.89811", "23.292382"], ["98.844295", "23.323341"], ["98.878284", "23.4184"], ["98.821571", "23.466061"], ["98.773527", "23.530055"], ["98.849638", "23.617887"], ["98.774085", "23.751823"], ["98.656368", "23.775684"], ["98.63961", "23.801661"], ["98.649909", "23.978332"], ["98.828974", "24.077833"], ["98.83893", "24.109859"], ["98.594849", "24.051324"], ["98.534853", "24.098401"], ["98.118939", "24.06406"], ["97.652578", "23.812007"], ["97.500916", "23.916402"], ["97.507889", "23.946076"], ["97.703905", "24.12772"], ["97.7321", "24.242073"], ["97.646012", "24.307132"], ["97.678134", "24.384313"], ["97.653759", "24.420913"], ["97.528617", "24.403523"], ["97.504349", "24.421636"], ["97.520614", "24.750904"], ["97.686181", "24.867223"], ["97.726886", "24.872596"], ["97.701159", "24.901891"], ["97.691374", "25.085579"], ["97.816257", "25.289948"], ["97.844152", "25.297669"], ["97.93803", "25.249897"], ["98.122308", "25.413237"], ["98.152177", "25.643055"], ["98.313818", "25.589382"], ["98.380058", "25.615679"], ["98.510756", "25.863626"], ["98.635018", "25.83211"], ["98.668857", "25.860517"], ["98.546226", "26.121072"], ["98.648708", "26.171346"], ["98.686366", "26.138757"], ["98.648", "26.279486"], ["98.751404", "26.620222"], ["98.701365", "26.849746"], ["98.733852", "27.033154"], ["98.685272", "27.065508"], ["98.663149", "27.194049"], ["98.708661", "27.325701"], ["98.657935", "27.422786"], ["98.67244", "27.532116"], ["98.574979", "27.540164"], ["98.537407", "27.61841"], ["98.464022", "27.631357"], ["98.417695", "27.512725"], ["98.29766", "27.498051"], ["98.144388", "27.832814"], ["98.155954", "27.920407"], ["98.109477", "27.953809"], ["98.111", "28.123353"], ["97.991245", "28.182664"], ["97.984571", "28.253152"], ["97.904449", "28.328541"], ["97.775702", "28.306704"], ["97.650433", "28.498038"], ["97.537651", "28.471615"], ["97.537544", "28.300942"], ["97.374809", "28.215134"], ["97.340262", "28.085365"], ["97.441328", "28.020526"], ["97.41045", "27.866111"], ["97.271254", "27.865238"], ["97.104206", "27.710621"], ["97.074959", "27.716851"], ["96.959302", "27.833554"], ["96.799979", "27.862962"], ["96.485238", "28.041967"], ["96.435456", "28.122218"], ["96.282742", "28.11548"], ["96.254032", "28.195619"], ["96.011753", "28.160892"], ["95.866721", "28.266533"], ["95.747824", "28.246895"], ["95.417182", "28.118906"], ["95.304315", "27.916842"], ["94.898787", "27.716889"], ["94.531603", "27.567615"], ["94.290032", "27.552854"], ["93.888688", "27.17204"], ["93.845987", "27.008916"], ["93.571308", "26.909059"], ["92.944937", "26.862668"], ["92.647405", "26.922873"], ["92.093539", "26.830122"], ["92.094247", "26.952103"], ["91.998589", "27.089524"], ["92.083004", "27.299047"], ["92.034273", "27.387239"], ["91.995907", "27.444668"], ["91.729424", "27.433927"], ["91.566002", "27.518015"], ["91.534996", "27.644815"], ["91.602566", "27.75719"], ["91.514804", "27.82382"], ["91.562676", "27.867913"], ["91.468799", "27.914302"], ["91.441784", "27.98019"], ["91.319818", "28.026891"], ["91.09123", "27.815659"], ["90.700164", "28.042914"], ["90.592875", "27.992071"], ["90.457885", "28.016188"], ["90.284765", "28.126494"], ["90.15898", "28.149257"], ["90.026414", "28.108761"], ["89.808083", "28.209972"], ["89.741178", "28.14466"], ["89.620585", "28.133666"], ["89.394701", "27.853894"], ["89.261577", "27.776101"], ["89.129934", "27.494282"], ["89.208705", "27.359876"], ["89.003119", "27.183627"], ["88.914757", "27.261172"], ["88.754318", "27.459692"], ["88.742559", "27.575756"], ["88.824484", "27.683585"], ["88.858366", "27.84585"], ["88.817167", "27.989323"], ["88.749833", "28.04227"], ["88.643789", "28.079175"], ["88.414536", "27.948938"], ["88.164768", "27.927649"], ["88.119621", "27.836742"], ["87.844298", "27.914245"], ["87.731731", "27.773994"], ["87.596998", "27.78341"], ["87.555606", "27.832169"], ["87.226918", "27.783961"], ["87.114007", "27.809055"], ["87.017899", "27.921014"], ["86.741974", "28.007834"], ["86.699681", "28.06541"], ["86.621253", "28.036683"], ["86.583402", "28.057988"], ["86.53626", "27.935498"], ["86.410089", "27.875861"], ["86.21079", "27.953771"], ["86.168518", "28.117581"], ["86.115561", "28.075237"], ["86.149271", "27.905693"], ["85.994046", "27.879218"], ["85.944521", "27.932939"], ["85.832512", "28.151055"], ["85.730202", "28.210313"], ["85.701256", "28.320003"], ["85.608344", "28.222546"], ["85.501399", "28.296408"], ["85.379283", "28.245137"], ["85.108273", "28.308745"], ["85.080035", "28.467918"], ["85.159664", "28.55567"], ["85.153999", "28.618263"], ["85.06716", "28.641711"], ["84.995663", "28.560816"], ["84.851232", "28.539159"], ["84.68178", "28.609315"], ["84.624424", "28.696084"], ["84.465938", "28.711423"], ["84.389849", "28.828396"], ["84.202845", "28.880867"], ["84.21602", "29.009754"], ["84.163899", "29.035197"], ["84.138279", "29.170731"], ["84.156046", "29.210987"], ["84.110534", "29.218441"], ["84.085858", "29.266484"], ["83.922973", "29.294016"], ["83.658078", "29.134976"], ["83.571818", "29.151918"], ["83.232014", "29.552591"], ["83.070545", "29.578981"], ["82.920063", "29.684809"], ["82.816744", "29.661877"], ["82.675381", "29.739992"], ["82.684436", "29.800693"], ["82.605515", "29.811846"], ["82.541184", "29.930689"], ["82.159367", "30.045582"], ["82.174859", "30.141657"], ["82.084479", "30.216893"], ["82.077913", "30.310431"], ["81.993091", "30.291904"], ["81.637645", "30.413095"], ["81.562006", "30.34101"], ["81.44238", "30.380465"], ["81.419613", "30.185719"], ["81.306617", "30.138261"], ["81.279452", "29.994378"], ["81.11603", "30.010804"], ["80.995588", "30.23662"], ["80.302677", "30.539587"], ["80.0878", "30.543727"], ["79.94236", "30.672449"], ["79.868267", "30.834188"], ["79.825373", "30.839126"], ["79.673774", "30.945519"], ["79.593372", "30.894565"], ["79.4033", "31.036535"], ["79.346716", "31.001927"], ["79.336288", "30.933391"], ["79.224193", "30.920174"], ["79.170227", "30.981969"], ["79.092743", "30.963258"], ["78.986249", "31.027673"], ["78.96668", "31.157988"], ["78.856924", "31.281503"], ["78.783796", "31.274131"], ["78.728542", "31.344273"], ["78.757918", "31.433515"], ["78.697536", "31.51499"], ["78.804524", "31.611708"], ["78.62458", "31.82264"], ["78.722126", "31.927562"], ["78.578596", "31.999524"], ["78.497701", "32.11424"], ["78.432641", "32.118838"], ["78.402622", "32.220389"], ["78.4762", "32.31131"], ["78.36638", "32.528271"], ["78.381336", "32.554898"], ["78.75176", "32.731065"], ["78.809223", "32.496551"], ["78.976872", "32.364195"], ["79.005883", "32.376536"], ["79.080126", "32.394077"], ["79.114029", "32.491665"], ["79.279168", "32.61355"], ["79.272795", "32.713951"], ["79.195912", "32.779409"], ["79.222884", "32.93039"], ["79.135616", "33.001861"], ["79.1289", "33.16414"], ["78.818901", "33.407102"], ["78.715496", "33.540948"], ["78.723736", "33.604683"], ["78.656015", "33.65053"], ["78.749506", "33.746395"], ["78.715582", "33.972994"], ["78.631468", "34.014908"], ["78.635867", "34.100789"], ["78.894839", "34.171104"], ["78.97243", "34.341399"], ["78.867137", "34.336615"], ["78.698266", "34.491737"], ["78.566988", "34.478543"], ["78.527312", "34.539705"], ["78.430667", "34.514354"], ["78.403587", "34.570207"], ["78.247139", "34.615374"], ["78.238835", "34.685346"], ["78.179204", "34.722162"], ["78.172767", "34.964414"], ["78.056982", "35.102584"], ["77.985699", "35.231108"], ["77.986279", "35.376996"], ["78.060694", "35.455461"], ["77.904546", "35.435236"], ["77.815948", "35.484733"], ["77.688854", "35.41908"], ["77.389219", "35.439747"], ["77.300084", "35.509365"], ["77.189727", "35.490691"], ["76.844516", "35.637645"], ["76.746969", "35.630442"], ["76.675837", "35.721674"], ["76.57151", "35.752903"], ["76.552477", "35.878323"], ["76.372211", "35.795695"], ["76.149781", "35.797227"], ["76.124933", "35.947734"], ["75.922673", "36.058952"], ["75.911558", "36.150212"], ["76.037836", "36.25097"], ["75.962627", "36.325913"], ["75.987883", "36.449905"], ["75.852334", "36.642976"], ["75.645268", "36.740208"], ["75.442793", "36.696296"], ["75.389578", "36.92691"], ["75.229053", "36.936669"], ["75.144038", "36.993436"], ["74.896481", "36.905551"], ["74.830134", "37.022531"], ["74.731107", "36.999897"], ["74.690745", "37.052831"], ["74.559724", "37.004866"], ["74.481919", "37.046871"], ["74.437845", "37.120308"], ["74.499922", "37.266966"], ["74.739861", "37.314987"], ["74.866312", "37.253902"], ["75.109062", "37.372562"], ["75.102367", "37.44057"], ["74.921629", "37.536802"], ["74.864573", "37.654148"], ["74.964759", "37.773242"], ["74.890065", "37.834937"], ["74.908884", "37.982278"], ["74.777327", "38.153069"], ["74.761705", "38.335766"], ["74.838288", "38.415972"], ["74.834661", "38.466073"], ["74.630191", "38.571841"], ["74.373536", "38.625873"], ["74.159667", "38.646204"], ["74.103234", "38.581"], ["74.111817", "38.521998"], ["74.000838", "38.494528"], ["73.77285", "38.599147"], ["73.670411", "38.8621"], ["73.725193", "38.95749"], ["73.802719", "38.951449"], ["73.807654", "38.986017"], ["73.72221", "39.008697"], ["73.473516", "39.38863"], ["73.616295", "39.498494"], ["73.852308", "39.511093"], ["73.918183", "39.600828"], ["73.897347", "39.705585"], ["73.808942", "39.800228"], ["73.93934", "39.994893"], ["73.923182", "40.040084"], ["74.206402", "40.150079"], ["74.349396", "40.120697"], ["74.57305", "40.295485"], ["74.65313", "40.30568"], ["74.68538", "40.371234"], ["74.834146", "40.370645"], ["74.764109", "40.445837"], ["74.82522", "40.547706"], ["74.991968", "40.485604"], ["75.234225", "40.478276"], ["75.595829", "40.68866"], ["75.623209", "40.675235"], ["75.670288", "40.537172"], ["75.761075", "40.482617"], ["75.702088", "40.361506"], ["75.718331", "40.319244"], ["75.831778", "40.356634"], ["75.909498", "40.327457"], ["75.962198", "40.405801"], ["76.169136", "40.4108"], ["76.276231", "40.468254"], ["76.350474", "40.381058"], ["76.518981", "40.485522"], ["76.629574", "40.63177"], ["76.618888", "40.769281"], ["76.705191", "40.836687"], ["76.738064", "40.970777"], ["76.866853", "41.052415"], ["77.002079", "41.102703"], ["77.174621", "41.038594"], ["77.761016", "41.051719"], ["77.819595", "41.177071"], ["78.104789", "41.252161"], ["78.153155", "41.41058"], ["78.633699", "41.494773"], ["78.691227", "41.573398"], ["79.204752", "41.752489"], ["79.314144", "41.836204"], ["79.760721", "41.919283"], ["79.886034", "42.062214"], ["80.133162", "42.067184"], ["80.141101", "42.212865"], ["80.253518", "42.271926"], ["80.176806", "42.427971"], ["80.233755", "42.509043"], ["80.134728", "42.629333"], ["80.233669", "42.836907"], ["80.527124", "42.908804"], ["80.358446", "43.012006"], ["80.363209", "43.05597"], ["80.77054", "43.196057"], ["80.751915", "43.283969"], ["80.657952", "43.321619"], ["80.722024", "43.489763"], ["80.498157", "43.799783"], ["80.367136", "44.112086"], ["80.382199", "44.282371"], ["80.320637", "44.484489"], ["80.375676", "44.600628"], ["80.200903", "44.711915"], ["80.153825", "44.809898"], ["79.982829", "44.769908"], ["79.863417", "44.896027"], ["79.863911", "44.925979"], ["80.099001", "45.081976"], ["80.380783", "45.073778"], ["80.472493", "45.151008"], ["80.593643", "45.1361"], ["80.723355", "45.20611"], ["80.897505", "45.157969"], ["81.777248", "45.412611"], ["81.933761", "45.262246"], ["82.295816", "45.254845"], ["82.544253", "45.206065"], ["82.569401", "45.340669"], ["82.52743", "45.402307"], ["82.265496", "45.514783"], ["82.238288", "45.626914"], ["82.311373", "45.780155"], ["82.319655", "45.956177"], ["82.440763", "46.003982"], ["82.822452", "46.775333"], ["83.012309", "47.24291"], ["83.148286", "47.241861"], ["83.371532", "47.179737"], ["83.583899", "47.087891"], ["83.927865", "46.999324"], ["84.753106", "47.038661"], ["84.955001", "46.896507"], ["85.227256", "47.083274"], ["85.529079", "47.087102"], ["85.670679", "47.295094"], ["85.656817", "47.416255"], ["85.581307", "47.505664"], ["85.500433", "48.023314"], ["85.564678", "48.210504"], ["85.778117", "48.445159"], ["86.21609", "48.461326"], ["86.297393", "48.520485"], ["86.571493", "48.56921"], ["86.745751", "48.738276"], ["86.72689", "48.79468"], ["86.785169", "48.850936"], ["86.706676", "48.980358"], ["86.708565", "49.011387"], ["86.889625", "49.162344"], ["87.145572", "49.183316"], ["87.435358", "49.10582"], ["87.476878", "49.120484"], ["87.490826", "49.169134"], ["87.836187", "49.198616"], ["87.895432", "49.115877"], ["87.87024", "49.056222"], ["87.9406", "48.974696"], ["87.803872", "48.87904"], ["88.125672", "48.72326"], ["88.023491", "48.591881"], ["88.35763", "48.495848"], ["88.450756", "48.423234"], ["88.527102", "48.435337"], ["88.631537", "48.352171"], ["88.608513", "48.280466"], ["88.657844", "48.207172"], ["88.828926", "48.136652"], ["88.942652", "48.146274"], ["89.088199", "48.017358"], ["89.571383", "48.066881"], ["89.777999", "47.863838"], ["90.077548", "47.910676"], ["90.155997", "47.747389"], ["90.399628", "47.669347"], ["90.413575", "47.647046"], ["90.398619", "47.62125"]], JPN = [["145.824681", "43.408601"], ["145.802708", "43.198731"], ["145.188847", "43.068449"], ["144.992667", "42.907867"], ["143.970938", "42.890345"], ["143.384543", "42.351736"], ["143.299399", "41.875506"], ["142.95333", "42.100071"], ["142.391844", "42.272669"], ["141.369501", "42.535185"], ["140.832544", "42.147648"], ["141.028863", "41.945699"], ["141.296655", "41.765675"], ["141.564447", "41.265171"], ["141.675004", "40.481173"], ["141.829516", "40.300647"], ["141.982619", "40.122464"], ["142.142627", "39.594221"], ["142.025897", "39.368452"], ["142.021777", "39.317473"], ["141.850783", "38.901626"], ["140.939308", "35.65669"], ["139.436268", "34.193845"], ["137.347075", "34.1603"], ["135.63835", "33.29272"], ["133.488103", "32.70897"], ["131.614016", "31.325292"], ["130.633951", "28.842845"], ["127.785048", "25.789008"], ["126.597333", "26.344784"], ["128.404011", "28.563857"], ["128.940636", "30.856318"], ["128.544464", "32.79621"], ["129.194642", "34.475467"], ["129.324698", "34.765641"], ["129.502255", "34.700627"], ["129.480282", "33.855809"], ["130.439605", "33.915587"], ["130.801388", "34.159716"], ["130.791882", "34.445506"], ["131.121471", "34.437578"], ["131.298124", "34.567727"], ["132.535148", "35.287335"], ["132.978675", "36.154847"], ["133.268559", "36.366209"], ["134.710796", "35.708808"], ["135.303308", "35.794165"], ["136.404389", "36.456814"], ["136.612743", "37.37546"], ["137.409252", "37.580348"], ["137.291471", "36.906421"], ["137.982237", "37.126821"], ["138.504087", "37.383552"], ["138.758146", "37.83898"], ["139.207212", "38.04151"], ["139.310081", "38.315743"], ["139.737028", "38.85997"], ["139.403318", "39.234917"], ["139.952634", "39.328459"], ["140.002073", "39.745742"], ["139.695586", "39.824208"], ["139.679107", "40.025361"], ["139.935912", "40.077921"], ["140.001079", "40.309807"], ["139.922802", "40.434311"], ["139.828954", "40.646676"], ["139.95008", "40.766604"], ["139.957833", "41.432491"], ["140.001779", "42.027933"], ["139.389291", "42.038134"], ["139.346719", "42.242877"], ["139.63099", "42.291658"], ["139.72712", "42.641155"], ["139.942098", "42.710048"], ["140.194783", "42.842098"], ["140.30396", "42.856193"], ["140.309453", "43.306551"], ["140.393224", "43.399418"], ["140.61976", "43.355264"], ["140.788732", "43.238558"], ["140.923314", "43.24556"], ["141.029058", "43.24356"], ["141.083989", "43.216544"], ["141.141667", "43.185513"], ["141.336675", "43.240561"], ["141.328435", "43.731771"], ["141.350408", "43.792272"], ["141.594854", "43.937818"], ["141.565334", "44.291761"], ["141.70541", "44.45177"], ["141.708157", "44.742196"], ["141.683437", "45.002047"], ["141.226594", "45.076599"], ["141.053559", "45.165748"], ["140.987641", "45.335905"], ["140.943696", "45.481498"], ["141.201589", "45.501064"], ["141.972005", "45.52416"], ["142.341996", "45.204477"], ["142.567215", "45.014513"], ["142.747966", "44.801094"], ["143.487122", "44.343678"], ["144.463587", "44.078617"], ["144.874201", "44.098345"], ["145.125513", "44.222478"], ["145.300832", "44.391445"], ["145.487445", "44.320885"], ["145.111163", "43.848378"], ["145.420933", "43.545126"], ["145.451146", "43.393635"]], EAST = [["73.757316", "29.95798"], ["73.045185", "28.989136"], ["72.434431", "28.60931"], ["72.060098", "28.097836"], ["71.631749", "27.60702"], ["70.67236", "27.593264"], ["69.82743", "27.041579"], ["70.337045", "26.566045"], ["70.070655", "26.098932"], ["70.070655", "25.85946"], ["70.290717", "25.713457"], ["70.626599", "25.671708"], ["70.68451", "25.201036"], ["70.974064", "24.791642"], ["70.811914", "24.612763"], ["70.139151", "24.465923"], ["69.268014", "24.435423"], ["68.313114", "24.267539"], ["67.911051", "23.808548"], ["68.547651", "23.00912"], ["69.11724", "22.684917"], ["68.748682", "22.406416"], ["69.301519", "21.536417"], ["70.153052", "20.55461"], ["71.170222", "20.332219"], ["72.234349", "21.204506"], ["72.501752", "21.087142"], ["72.627589", "19.003767"], ["72.973641", "16.878922"], ["74.267757", "13.888898"], ["75.369075", "10.48118"], ["76.976429", "7.781262"], ["78.374805", "8.242836"], ["79.427902", "9.641233"], ["80.513091", "10.734685"], ["80.254133", "11.953377"], ["80.702994", "13.082541"], ["80.402232", "15.312175"], ["82.991824", "16.887862"], ["85.259974", "19.051683"], ["87.784208", "21.10679"], ["89.263244", "21.658877"], ["89.121009", "23.437218"], ["88.869364", "23.717994"], ["88.93501", "24.317619"], ["88.267603", "24.596482"], ["88.727129", "25.073086"], ["89.186656", "25.132532"], ["88.891246", "25.626788"], ["88.650542", "25.666241"], ["88.201956", "25.892841"], ["88.420778", "26.12883"], ["88.54113", "26.285892"], ["89.241361", "26.020727"], ["89.613359", "25.863309"], ["89.657124", "25.330477"], ["90.190932", "25.070998"], ["91.175632", "25.051175"], ["91.811935", "25.05221"], ["92.234344", "24.983507"], ["92.104658", "24.649259"], ["91.844714", "24.363456"], ["91.46563", "24.215373"], ["90.999897", "23.839459"], ["91.216517", "23.054471"], ["91.389672", "22.300847"], ["92.125338", "20.623521"], ["93.946113", "18.753448"], ["92.823675", "16.135717"], ["91.224276", "9.998681"], ["93.522355", "5.752403"], ["96.409859", "0.991383"], ["100.048825", "-3.72227"], ["104.60328", "-7.736835"], ["114.01025", "-9.967468"], ["123.433702", "-11.032285"], ["123.717523", "-10.536628"], ["124.427075", "-10.257467"], ["125.004217", "-9.79418"], ["125.026253", "-9.527403"], ["125.12788", "-9.406056"], ["125.031601", "-9.358561"], ["124.946021", "-9.216037"], ["125.026253", "-9.168516"], ["125.192065", "-9.13155"], ["125.181368", "-8.982538"], ["124.999509", "-8.987821"], ["124.919277", "-8.924418"], ["125.095787", "-8.596662"], ["125.555784", "-8.088612"], ["125.721597", "-8.120384"], ["127.292232", "-8.326419"], ["132.424841", "-8.447132"], ["139.646777", "-8.512957"], ["141.039618", "-9.209048"], ["141.025347", "-6.894209"], ["140.978655", "-6.887392"], ["140.92235", "-6.851943"], ["140.912737", "-6.791946"], ["140.905871", "-6.737397"], ["140.850939", "-6.695117"], ["140.903124", "-6.59554"], ["140.945696", "-6.509588"], ["141.000442", "-6.341825"], ["140.971754", "-2.322171"], ["131.63417", "2.671779"], ["125.182746", "17.665698"], ["120.512231", "19.243264"], ["119.486602", "16.550429"], ["119.820154", "12.379244"], ["115.293339", "5.77989"], ["114.675587", "4.850295"], ["114.550618", "4.735342"], ["113.923024", "4.60805"], ["113.581092", "3.881824"], ["113.423754", "3.763395"], ["113.138025", "3.427757"], ["112.798973", "3.119213"], ["111.886744", "2.960093"], ["109.608393", "3.016867"], ["108.771364", "3.935896"], ["107.181008", "7.101455"], ["110.509765", "12.398562"], ["108.171244", "18.449712"], ["108.482399", "21.923911"], ["106.042422", "23.36869"], ["103.861684", "23.500971"], ["101.853026", "22.51803"], ["101.964992", "22.453371"], ["102.079606", "22.467488"], ["102.100842", "22.366033"], ["102.192713", "22.264854"], ["102.457234", "22.052786"], ["102.482552", "21.991854"], ["102.505944", "21.933096"], ["102.598494", "21.858522"], ["102.635027", "21.768076"], ["102.625285", "21.706993"], ["102.652076", "21.663993"], ["102.749497", "21.641356"], ["102.798208", "21.673047"], ["102.841349", "21.836472"], ["102.857688", "21.688772"], ["102.936435", "21.684707"], ["102.971433", "21.587108"], ["102.897061", "21.530145"], ["102.831439", "21.416153"], ["102.853313", "21.363197"], ["102.770191", "21.249074"], ["102.905811", "20.975636"], ["103.219101", "20.747931"], ["103.517772", "20.714677"], ["103.809332", "20.581588"], ["103.928404", "20.796397"], ["104.17602", "20.868718"], ["104.456453", "20.674762"], ["104.597217", "20.649539"], ["104.494205", "20.561152"], ["104.33078", "20.448774"], ["104.574769", "20.381484"], ["104.658948", "20.213054"], ["104.76838", "20.149846"], ["104.838529", "20.181454"], ["104.938282", "20.043215"], ["104.745932", "19.888842"], ["104.790827", "19.817585"], ["104.656142", "19.725166"], ["104.580381", "19.643265"], ["104.41625", "19.738372"], ["104.315236", "19.711959"], ["104.004834", "19.776374"], ["103.978829", "19.601517"], ["104.057089", "19.487272"], ["103.795479", "19.292317"], ["104.05618", "19.205901"], ["104.303857", "19.041792"], ["104.509718", "18.953592"], ["104.638381", "18.819682"], ["104.82816", "18.734411"], ["105.081179", "18.714495"], ["105.090265", "18.561021"], ["105.010482", "18.494337"], ["105.215532", "18.232365"], ["105.507333", "18.022503"], ["105.673181", "17.706155"], ["105.959258", "17.411042"], ["106.393016", "16.974064"], ["106.530565", "16.907086"], ["106.511314", "16.705452"], ["106.610307", "16.485756"], ["106.704089", "16.360817"], ["106.855183", "16.430793"], ["106.917705", "16.245803"], ["107.074009", "16.275813"], ["107.178212", "16.130721"], ["107.386617", "15.975505"], ["107.256364", "15.895346"], ["107.157745", "15.729918"], ["107.270294", "15.538977"], ["107.541111", "15.371176"], ["107.598724", "15.119441"], ["107.495192", "15.087312"], ["107.421241", "14.973038"], ["107.491494", "14.719275"], ["107.439728", "14.558285"], ["107.365777", "14.619117"], ["107.28443", "14.576179"], ["107.125343", "14.454386"], ["107.058787", "14.468707"], ["106.862816", "14.336197"], ["106.714913", "14.443644"], ["106.640961", "14.525985"], ["106.467176", "14.622607"], ["106.385829", "14.475868"], ["106.219438", "14.500928"], ["106.189858", "14.42932"], ["106.104814", "14.407834"], ["105.956911", "14.346944"], ["105.993887", "14.192854"], ["106.138092", "14.056594"], ["106.067838", "13.984846"], ["105.938423", "13.948964"], ["105.860774", "14.067355"], ["105.570516", "14.196239"], ["105.40579", "14.123984"], ["105.307739", "14.207645"], ["105.23322", "14.257067"], ["105.284207", "14.321679"], ["105.397946", "14.336879"], ["105.499919", "14.435654"], ["105.550906", "14.617894"], ["105.535217", "14.773437"], ["105.660723", "14.90613"], ["105.629347", "15.019802"], ["105.511685", "15.118269"], ["105.543062", "15.182626"], ["105.660723", "15.2848"], ["105.543062", "15.368016"], ["105.641113", "15.40205"], ["105.652879", "15.526792"], ["105.672489", "15.723201"], ["105.433244", "15.866611"], ["105.419865", "16.077323"], ["105.134284", "16.158015"], ["105.05029", "16.303179"], ["104.798307", "16.56635"], ["104.815106", "16.791639"], ["104.807079", "17.064937"], ["104.834545", "17.357467"], ["104.746654", "17.518618"], ["104.392993", "17.569592"], ["104.221867", "17.790865"], ["104.071113", "18.043041"], ["103.989584", "18.196169"], ["103.880878", "18.236734"], ["103.692584", "18.269917"], ["103.616878", "18.310466"], ["103.546996", "18.349162"], ["103.428584", "18.336313"], ["103.370348", "18.277339"], ["103.302336", "18.221647"], ["103.237773", "18.102183"], ["103.207191", "18.040806"], ["103.105249", "17.937384"], ["102.938746", "17.875949"], ["102.914959", "17.827432"], ["102.813018", "17.765959"], ["102.687291", "17.753015"], ["102.568359", "17.830667"], ["102.510593", "17.840371"], ["102.422244", "17.921219"], ["102.310109", "17.960013"], ["102.204769", "17.995566"], ["102.143605", "18.066652"], ["101.987295", "17.966477"], ["101.868364", "17.927685"], ["101.647491", "17.811257"], ["101.148809", "17.535022"], ["101.023374", "17.599797"], ["101.039054", "17.808912"], ["101.175591", "17.993048"], ["101.212078", "18.10208"], ["101.219896", "18.173904"], ["101.206865", "18.240749"], ["101.212078", "18.344679"], ["101.107829", "18.394147"], ["101.092192", "18.45349"], ["101.206865", "18.578877"], ["101.31372", "18.655442"], ["101.272021", "18.741845"], ["101.272021", "18.830671"], ["101.311114", "18.939171"], ["101.370997", "19.079681"], ["101.298023", "19.148632"], ["101.279779", "19.212632"], ["101.22818", "19.375675"], ["101.230424", "19.441269"], ["101.295484", "19.487804"], ["101.29997", "19.591402"], ["101.239397", "19.633668"], ["101.145173", "19.587175"], ["101.093574", "19.629442"], ["100.94102", "19.650571"], ["100.893907", "19.65691"], ["100.864742", "19.616763"], ["100.835578", "19.570265"], ["100.770518", "19.534326"], ["100.611233", "19.574493"], ["100.584312", "19.52164"], ["100.525983", "19.540669"], ["100.46541", "19.637894"], ["100.436245", "19.777288"], ["100.541687", "19.91867"], ["100.597773", "20.190526"], ["100.502946", "20.195053"], ["100.428788", "20.262059"], ["100.379218", "20.36601"], ["100.329779", "20.413638"], ["100.244635", "20.387895"], ["100.173224", "20.317079"], ["100.160865", "20.244943"], ["100.114789", "20.260301"], ["100.107922", "20.315689"], ["100.155988", "20.507461"], ["100.211891", "20.650056"], ["100.290818", "20.736459"], ["100.399973", "20.811825"], ["100.562866", "20.788277"], ["100.673701", "20.899705"], ["100.59616", "20.954029"], ["100.751867", "21.254036"], ["100.998402", "21.338663"], ["101.211622", "21.580378"], ["101.209043", "21.846211"], ["100.909901", "21.894492"], ["100.207565", "21.580378"], ["100.051491", "22.159742"], ["99.466212", "22.436515"], ["99.71333", "23.024318"], ["99.352488", "23.281431"], ["99.03983", "24.3247"], ["98.101855", "24.95993"], ["98.855913", "25.608485"], ["98.911088", "26.812993"], ["98.892697", "27.483968"], ["98.340947", "27.826069"], ["98.120247", "28.377665"], ["97.586888", "28.733061"], ["97.108705", "28.329109"], ["96.658506", "27.787659"], ["96.296725", "28.010502"], ["95.847241", "28.136253"], ["95.288126", "27.787659"], ["94.685158", "27.233428"], ["93.281889", "26.647032"], ["92.037851", "26.720259"], ["90.141229", "26.820605"], ["88.984724", "26.833974"], ["88.731159", "27.080308"], ["88.794435", "27.331629"], ["88.741186", "27.914582"], ["88.223484", "27.953015"], ["88.169108", "27.50057"], ["87.774017", "27.262697"], ["88.215457", "26.870398"], ["87.783036", "26.535989"], ["87.047344", "26.702224"], ["84.777332", "27.310285"], ["83.539214", "27.665305"], ["82.385985", "27.880248"], ["81.010299", "28.662263"], ["80.547568", "29.001896"], ["81.345045", "30.304903"], ["80.749935", "31.185747"], ["80.056967", "31.015739"], ["79.215234", "31.178494"], ["78.991224", "31.346766"], ["79.254658", "31.656243"], ["78.835019", "31.979804"], ["78.65109", "32.12011"], ["78.595912", "32.240756"], ["78.591313", "32.400075"], ["78.669483", "32.54361"], ["78.739513", "32.426665"], ["78.84424", "32.288005"], ["79.067657", "32.24668"], ["79.277111", "32.470789"], ["79.395802", "32.676713"], ["79.235221", "33.233259"], ["79.011803", "33.47819"], ["78.84424", "33.681772"], ["79.182009", "34.336185"], ["78.821102", "34.565916"], ["78.428537", "34.758609"], ["78.294895", "34.940474"], ["78.23791", "35.530039"], ["77.722544", "35.628785"], ["77.294994", "35.609184"], ["76.821489", "35.701892"], ["76.684572", "35.988603"], ["76.399329", "35.919333"], ["76.159724", "35.933192"], ["76.165429", "36.20986"], ["76.074151", "36.366207"], ["75.999987", "36.641347"], ["75.714744", "36.787688"], ["75.562518", "36.805399"], ["75.481245", "36.811057"], ["75.45651", "36.950968"], ["75.253968", "37.023882"], ["75.084541", "37.066268"], ["74.894884", "37.084426"], ["74.735572", "37.122745"], ["74.643309", "37.074934"], ["74.566145", "37.033976"], ["74.549925", "36.938948"], ["74.491692", "37.015218"], ["74.377803", "36.998366"], ["74.261908", "36.915016"], ["74.132106", "36.91687"], ["74.057933", "36.840851"], ["73.967535", "36.853836"], ["73.925813", "36.892775"], ["73.808039", "36.908632"], ["73.728388", "36.920709"], ["73.639124", "36.911926"], ["73.699986", "36.820121"], ["73.765904", "36.814624"], ["73.833196", "36.776135"], ["73.853795", "36.743128"], ["73.834569", "36.711208"], ["73.735692", "36.736525"], ["73.657414", "36.707906"], ["73.599736", "36.711208"], ["73.57227", "36.735425"], ["73.517339", "36.729922"], ["73.397862", "36.757433"], ["73.319585", "36.738726"], ["73.241307", "36.720664"], ["73.175389", "36.732772"], ["73.112218", "36.71516"], ["73.032567", "36.686532"], ["73.039433", "36.651284"], ["73.060033", "36.609405"], ["73.036687", "36.564195"], ["73.002355", "36.529994"], ["72.958409", "36.507921"], ["72.944676", "36.475904"], ["72.886998", "36.474799"], ["72.855412", "36.448292"], ["72.848546", "36.400777"], ["72.832334", "36.374217"], ["72.796629", "36.362053"], ["72.685258", "36.303681"], ["72.663286", "36.274901"], ["72.574022", "36.267151"], ["72.461412", "36.175196"], ["73.530389", "35.809316"], ["74.170542", "35.420826"], ["74.340245", "35.055408"], ["73.9237", "34.612198"], ["73.676858", "34.332391"], ["73.880481", "33.422673"], ["74.651862", "32.906095"], ["75.747223", "32.542685"], ["75.623802", "32.256112"], ["74.975842", "31.968632"], ["74.759855", "31.732749"], ["74.759855", "30.955369"], ["74.327882", "30.584206"], ["74.18929", "30.224947"], ["74.035013", "29.864372"]], getOutseaData = function(t) {
      return t && "mapbox" === t ? {
          boundsP16: [[CHN]],
          nebulaOutSea: []
      } : {
          boundsP16: [[CHN], [JPN], [EAST]],
          nebulaOutSea: [[JPN], [EAST]]
      }
  }, geoUtil = new GeometryUtilCls({}), CONSTS$1 = {
      sV: "https://webapi.amap.com/style_icon/sprite_v8@2x.png",
      EU: [LangConf.my.type, LangConf.km.type, LangConf.PU.type, LangConf.th.type, LangConf.$U.type]
  }, MapboxLabelFormat = (dR = LabelFormat,
  __extends(eR, dR),
  eR.prototype.Ns = function(t, e) {
      return dR.prototype.Ns.call(this, t, e),
      this.rV(t, e)
  }
  ,
  eR.prototype.rV = function(t, e) {
      var r, n, i = (t.data || {}).poilabel || [], a = t.road || [], o = {}, s = this.hV(t);
      for (r in i)
          i.hasOwnProperty(r) && (n = i[r],
          n = this.nV(n, s, e.zoom, e.VQ),
          o[r] = n);
      return this.oV(a, {}),
      o
  }
  ,
  eR.prototype.nV = function(t, e, r, n) {
      for (var i = [], a = this.kQ, o = 0, s = t; o < s.length; o++) {
          var u, c, f, l, h, d, v, g = s[o], b = g.name, p = g.position, m = g.id, y = g.minzoom, T = g.maxzoom, x = g.style, w = void 0 === x ? {} : x;
          "mapbox" !== n && 9 <= r && e && !this.uV(p[0]) || (u = w.lV,
          c = w.th,
          f = w.ih,
          l = w.nh,
          d = w.qU,
          h = w.eh,
          g = void 0 === (v = w.textAnchor) ? "bottom" : v,
          x = w.rh,
          w.sh,
          v = w.Kr,
          w = w.Qr,
          y = [y, T],
          T = null,
          l && d && h && (this.Fs[CONSTS$1.sV] = 1,
          T = [{
              image: CONSTS$1.sV,
              size: [d[6] / 2, d[7] / 2],
              clipOrigin: [d[4], d[5]],
              clipSize: [d[6], d[7]]
          }]),
          l = null,
          b && v && (a[v] || (a[v] = Util.color2RgbaArray(v)),
          h = a[v],
          d = void 0,
          v = 0,
          a[w] || (a[w] = Util.color2RgbaArray(w || "")),
          a[w] && (d = a[w],
          v = 3),
          w = this.fV(b) ? [0, b.length] : [],
          this.Ws(b, w),
          l = {
              txt: b,
              $G: w,
              direction: g || "center",
              offset: [0, 0],
              style: {
                  fontSize: x,
                  fillColor: h,
                  strokeColor: d,
                  strokeWidth: v,
                  fold: !1
              }
          }),
          y = {
              data: {
                  id: m,
                  name: b,
                  txt: b,
                  position: p[0],
                  positionType: "relative",
                  zooms: [c, f],
                  extData: {
                      id: m,
                      type: "poi"
                  }
              },
              opts: {
                  zIndex: u,
                  zooms: y,
                  visible: !0
              }
          },
          T && (y.opts.icon = T),
          l && (y.opts.text = l),
          (y.opts.text || y.opts.icon) && i.push(y))
      }
      return i
  }
  ,
  eR.prototype.oV = function(t, e) {
      for (var r = 0, n = t; r < n.length; r++) {
          var i = n[r].name
            , a = this.fV(i) ? [0, i.length] : [];
          i && this.Ws(i, a)
      }
  }
  ,
  eR.prototype.DQ = function(t, e) {
      for (var r = [], n = 0, i = t; n < i.length; n++) {
          var o = (a = i[n]).path
            , s = a.name || ""
            , u = labelsUtil.aQ(s.split(""))
            , c = a.distance || 1e5
            , l = void 0 === (f = (a.style && a.style[1],
          (g = a.style || {}).th)) ? zoomRange[0] : f
            , d = void 0 === (h = g.ih) ? zoomRange[1] : h
            , v = g.Kr
            , a = g.Qr
            , f = g.rh
            , h = g.zIndex
            , g = g.Hr;
          s && o && o.length && r.push({
              path: o,
              positionType: "absolute",
              name: s,
              $G: [],
              CO: u,
              rank: h,
              BG: void 0 === g ? "name_en" : g,
              distance: c,
              zooms: [l, d],
              style: {
                  fontSize: f || 12,
                  fillColor: v,
                  strokeColor: a
              }
          })
      }
      return r
  }
  ,
  eR.prototype.fV = function(t) {
      return t = LangManager.kU(t),
      -1 !== CONSTS$1.EU.indexOf(t)
  }
  ,
  eR.prototype.uV = function(t) {
      for (var e = ProjectionManager.getProjection("EPSG:3857").unproject(t[0], t[1]), r = getOutseaData("mapbox").boundsP16, n = 0; n < r.length; n++) {
          var i = r[n];
          if (geoUtil.isPointInPolygon(e, i[0]))
              return !1
      }
      return !0
  }
  ,
  eR.prototype.hV = function(t) {
      return t = [[(t = t.Ro)[0], t[1]], [t[2], t[1]], [t[2], t[3]], [t[0], t[3]]],
      this.cV(t)
  }
  ,
  eR.prototype.cV = function(t) {
      for (var e = [], r = 0; r < t.length; r++) {
          var n = t[r]
            , n = ProjectionManager.getProjection("EPSG:3857").unproject(n[0], n[1]);
          e.push(n)
      }
      for (var i = getOutseaData("mapbox").boundsP16, a = 0; a < i.length; a++) {
          var o = i[a];
          if (geoUtil.isRingInRingByMapboxB(e, o[0]))
              return !0
      }
      return !1
  }
  ,
  eR.id = "mapbox",
  eR), dR;
  function eR(t) {
      var e = dR.call(this) || this;
      return e.kQ = {},
      e
  }
  var Color = (eT = dT,
  dT.Wb = function(t, e) {
      return {
          rgba: t.rgba
      }
  }
  ,
  dT.Gb = function(t) {
      return new eT(t.rgba)
  }
  ,
  dT.FV = function(t, e) {
      var n = (r = this.DV(t[0], t[1], t[2], t[3]))[0]
        , i = r[1]
        , t = r[2]
        , r = r[3];
      return this.GQ(n += (.5 < n ? -.5 : .5) * e * .35, i -= (i - .5) * e * .35 * 5, t -= (t - .5) * e * .35, r)
  }
  ,
  dT.DV = function(t, e, r, n) {
      var i, a, o, s = Math.max(t, e, r), u = Math.min(t, e, r), c = (s + u) / 2;
      if (s === u)
          i = a = 0;
      else {
          switch (o = s - u,
          a = .5 < c ? o / (2 - s - u) : o / (s + u),
          s) {
          case t:
              i = (e - r) / o + (e < r ? 6 : 0);
              break;
          case e:
              i = (r - t) / o + 2;
              break;
          case r:
              i = (t - e) / o + 4
          }
          i /= 6
      }
      return [i, a, c, n]
  }
  ,
  dT.uQ = function(t, e, r) {
      return r < 0 && (r += 1),
      1 < r && --r,
      r < 1 / 6 ? t + 6 * (e - t) * r : r < .5 ? e : r < 2 / 3 ? t + (e - t) * (2 / 3 - r) * 6 : t
  }
  ,
  dT.GQ = function(t, e, r, n) {
      var i, a, o;
      return 0 === e ? i = a = o = r : (i = this.uQ(e = 2 * r - (r = r < .5 ? r * (1 + e) : r + e - r * e), r, t + 1 / 3),
      a = this.uQ(e, r, t),
      o = this.uQ(e, r, t - 1 / 3)),
      [i, a, o, n]
  }
  ,
  dT.Hb = function(t, e) {
      void 0 === e && (e = []);
      for (var r = 0, n = t.length; r < n; r += 2)
          e[r / 2] = parseInt(t.substr(r, 2), 16);
      return e
  }
  ,
  dT.Yx = function(t) {
      return t.startsWith("#") && (t = t.substr(1)),
      colorNames[t] ? eT.Hb(colorNames[t].substr(1)) : 1 === t.length ? eT.Hb(t + t + t + t + t + t) : 3 === t.length ? eT.Hb(t[0] + t[0] + t[1] + t[1] + t[2] + t[2]) : 6 === t.length ? eT.Hb(t) : [0, 0, 0]
  }
  ,
  dT.normalize = function(t) {
      for (var e = [], r = 0, n = t.length; r < n; r++)
          e[r] = t[r] / 255;
      return e
  }
  ,
  dT.create = function(t) {
      return t ? new eT(t) : null
  }
  ,
  dT.prototype.normalize = function() {
      return [this.rgba[0] / 255, this.rgba[1] / 255, this.rgba[2] / 255, this.rgba[3] / 255]
  }
  ,
  dT.prototype.Vb = function(t) {
      "string" == typeof t ? colorNames[t] ? this.Hb(colorNames[t].substr(1)) : 0 !== t.length && (1 !== (t = t.startsWith("#") ? t.substr(1) : t).length ? 3 !== t.length ? 6 !== t.length ? 8 !== t.length ? t.startsWith("rgba(") ? this.Yb(colorNames[t].substr(1)) : t.startsWith("rgb(") && this.Kb(colorNames[t].substr(1)) : this.$b(t) : this.Hb(t) : this.Hb(t[0] + t[0] + t[1] + t[1] + t[2] + t[2]) : this.Hb(t + t + t + t + t + t)) : t instanceof Array && (this.rgba[0] = t[0],
      this.rgba[1] = t[1],
      this.rgba[2] = t[2],
      this.rgba[3] = t[3] || 255)
  }
  ,
  dT.prototype.Hb = function(t) {
      this.$b(t + "FF")
  }
  ,
  dT.prototype.$b = function(t) {
      for (var e = 0, r = t.length; e < r; e += 2)
          this.rgba[e / 2] = parseInt(t.substr(e, 2), 16)
  }
  ,
  dT.prototype.Kb = function(t) {
      t = t.split(","),
      this.rgba[0] = parseInt(t[0].substr(4), 10),
      this.rgba[1] = parseInt(t[1], 10),
      this.rgba[2] = parseInt(t[2], 10),
      this.rgba[3] = 255
  }
  ,
  dT.prototype.Yb = function(t) {
      t = t.split(","),
      this.rgba[0] = parseInt(t[0].substr(5), 10),
      this.rgba[1] = parseInt(t[1], 10),
      this.rgba[2] = parseInt(t[2], 10),
      this.rgba[3] = 255 * parseFloat(t[3]) << 0
  }
  ,
  eT = __decorate([InnerClass("Color")], dT),
  eT), eT;
  function dT(t) {
      this.type = "AMap.Color",
      this.rgba = [],
      this.Vb(t)
  }
  var colorNames = {
      aliceblue: "#f0f8ff",
      antiquewhite: "#faebd7",
      aqua: "#00ffff",
      aquamarine: "#7fffd4",
      azure: "#f0ffff",
      beige: "#f5f5dc",
      bisque: "#ffe4c4",
      black: "#000000",
      blanchedalmond: "#ffebcd",
      blue: "#0000ff",
      blueviolet: "#8a2be2",
      brown: "#a52a2a",
      burlywood: "#deb887",
      cadetblue: "#5f9ea0",
      chartreuse: "#7fff00",
      chocolate: "#d2691e",
      coral: "#ff7f50",
      cornflowerblue: "#6495ed",
      cornsilk: "#fff8dc",
      crimson: "#dc143c",
      cyan: "#00ffff",
      darkblue: "#00008b",
      darkcyan: "#008b8b",
      darkgoldenrod: "#b8860b",
      darkgray: "#a9a9a9",
      darkgreen: "#006400",
      darkkhaki: "#bdb76b",
      darkmagenta: "#8b008b",
      darkolivegreen: "#556b2f",
      darkorange: "#ff8c00",
      darkorchid: "#9932cc",
      darkred: "#8b0000",
      darksalmon: "#e9967a",
      darkseagreen: "#8fbc8f",
      darkslateblue: "#483d8b",
      darkslategray: "#2f4f4f",
      darkturquoise: "#00ced1",
      darkviolet: "#9400d3",
      deeppink: "#ff1493",
      deepskyblue: "#00bfff",
      dimgray: "#696969",
      dodgerblue: "#1e90ff",
      firebrick: "#b22222",
      floralwhite: "#fffaf0",
      forestgreen: "#228b22",
      fuchsia: "#ff00ff",
      gainsboro: "#dcdcdc",
      ghostwhite: "#f8f8ff",
      gold: "#ffd700",
      goldenrod: "#daa520",
      gray: "#808080",
      green: "#008000",
      greenyellow: "#adff2f",
      honeydew: "#f0fff0",
      hotpink: "#ff69b4",
      indianred: "#cd5c5c",
      indigo: "#4b0082",
      ivory: "#fffff0",
      khaki: "#f0e68c",
      lavender: "#e6e6fa",
      lavenderblush: "#fff0f5",
      lawngreen: "#7cfc00",
      lemonchiffon: "#fffacd",
      lightblue: "#add8e6",
      lightcoral: "#f08080",
      lightcyan: "#e0ffff",
      lightgoldenrodyellow: "#fafad2",
      lightgrey: "#d3d3d3",
      lightgreen: "#90ee90",
      lightpink: "#ffb6c1",
      lightsalmon: "#ffa07a",
      lightseagreen: "#20b2aa",
      lightskyblue: "#87cefa",
      lightslategray: "#778899",
      lightsteelblue: "#b0c4de",
      lightyellow: "#ffffe0",
      lime: "#00ff00",
      limegreen: "#32cd32",
      linen: "#faf0e6",
      magenta: "#ff00ff",
      maroon: "#800000",
      mediumaquamarine: "#66cdaa",
      mediumblue: "#0000cd",
      mediumorchid: "#ba55d3",
      mediumpurple: "#9370d8",
      mediumseagreen: "#3cb371",
      mediumslateblue: "#7b68ee",
      mediumspringgreen: "#00fa9a",
      mediumturquoise: "#48d1cc",
      mediumvioletred: "#c71585",
      midnightblue: "#191970",
      mintcream: "#f5fffa",
      mistyrose: "#ffe4e1",
      moccasin: "#ffe4b5",
      navajowhite: "#ffdead",
      navy: "#000080",
      oldlace: "#fdf5e6",
      olive: "#808000",
      olivedrab: "#6b8e23",
      orange: "#ffa500",
      orangered: "#ff4500",
      orchid: "#da70d6",
      palegoldenrod: "#eee8aa",
      palegreen: "#98fb98",
      paleturquoise: "#afeeee",
      palevioletred: "#d87093",
      papayawhip: "#ffefd5",
      peachpuff: "#ffdab9",
      peru: "#cd853f",
      pink: "#ffc0cb",
      plum: "#dda0dd",
      powderblue: "#b0e0e6",
      purple: "#800080",
      rebeccapurple: "#663399",
      red: "#ff0000",
      rosybrown: "#bc8f8f",
      royalblue: "#4169e1",
      saddlebrown: "#8b4513",
      salmon: "#fa8072",
      sandybrown: "#f4a460",
      seagreen: "#2e8b57",
      seashell: "#fff5ee",
      sienna: "#a0522d",
      silver: "#c0c0c0",
      skyblue: "#87ceeb",
      slateblue: "#6a5acd",
      slategray: "#708090",
      snow: "#fffafa",
      springgreen: "#00ff7f",
      steelblue: "#4682b4",
      tan: "#d2b48c",
      teal: "#008080",
      thistle: "#d8bfd8",
      tomato: "#ff6347",
      turquoise: "#40e0d0",
      violet: "#ee82ee",
      wheat: "#f5deb3",
      white: "#ffffff",
      whitesmoke: "#f5f5f5",
      yellow: "#ffff00",
      yellowgreen: "#9acd32"
  }, NebulaLabelFormat = (fU = LabelFormat,
  __extends(gU, fU),
  gU.prototype.Ns = function(t, e) {
      return e.lang && (this.lang = e.lang),
      this._opts = e,
      this.bt = e.zoom,
      this.WW = e.ZL,
      this.rV(t, e.R_)
  }
  ,
  gU.prototype.rV = function(t, e) {
      var r, n, i = t.data || {}, a = i.poilabel || [], o = {}, s = t.cQ;
      for (r in a)
          a.hasOwnProperty(r) && (n = this.nV(a[r], {
              aV: t.zo.z < 10,
              cQ: s,
              R_: e
          }),
          o[r] = n);
      return i = i.roadName || [],
      i = this.oV(i, {
          R_: e
      }),
      o.eA = i,
      o
  }
  ,
  gU.prototype.nV = function(t, e) {
      for (var r, n, i, a, o, s, u, c, f, l = CONSTS.Lj, h = l.file, d = l.size, v = CONSTS.Mp, b = CONSTS.Pp, p = CONSTS.jp, m = this._opts.scale, y = (e = void 0 === e ? {} : e).aV, T = e.cQ, x = this.bt, w = [], A = this.lang, M = !T && 5 <= x, S = 0, P = t; S < P.length; S++) {
          var I = P[S]
            , $ = I.cw
            , C = I.ew
            , k = I.pos
            , N = (X = labelsUtil.tQ(I, A, M ? e.R_ : void 0)).name
            , L = X.$G || []
            , O = I.rank
            , _ = I.minzoom || v
            , E = (y ? zoomRange[1] : I.maxzoom,
          I.Fp)
            , U = I.Ep;
          if (3 === _ && (_ = 2),
          (10002 !== E || 28 !== U) && (r = this.oA(E, U, this.WW)) && (n = 1 < m || 9 < r.fontSize ? r.fontSize : 9,
          s = r.iconFile,
          u = r.showMode,
          c = r.forceShow,
          f = r.zIndex,
          G = r.zooms,
          R = labelsUtil.Jj([_, zoomRange[1]], G))) {
              for (var R, j = (R = labelsUtil.$p(R))[0], D = [], F = {}; j <= R[1]; ) {
                  var B = this.vn.dn(E, U, j);
                  B && "0" !== B.iconID && (K = B.iconID,
                  -1 === D.indexOf(K) && (D.push(K),
                  F[K] = []),
                  F[K].push(j)),
                  j++
              }
              (10002 !== E || 20 !== U && 18 !== U) && 16 < n && (n = 15);
              var G = [R[0] - b, R[1] + p];
              10002 === E && (13 === U || 18 === U) && G[0] <= 3 && (G[0] = 2.5);
              for (var z, V = s && "https" + h[s], O = {
                  data: {
                      id: $ ? $ + U : "",
                      position: k,
                      name: N,
                      txt: N,
                      rank: O,
                      BG: X.type,
                      extData: {
                          Lp: E,
                          Ap: U,
                          id: $,
                          type: "poi",
                          bz: C
                      }
                  },
                  opts: {
                      type: "billboard",
                      angle: 0,
                      forceShow: c,
                      zIndex: f,
                      visible: !0,
                      zooms: G
                  }
              }, H = r.xOffset || 0, W = r.yOffset || 0, q = [], X = void 0, $ = [0, 0], Y = 0; Y < D.length; Y++) {
                  var K = D[Y]
                    , Z = s && this.aA(parseInt(K, 10))
                    , J = d
                    , Q = labelsUtil.$p(F[K])
                    , tt = 1;
                  !N || "152" !== K && "153" !== K && "154" !== K || (tt = N.length <= 2 ? 1 : N.length / 2),
                  z = vector.Up(J, 2),
                  V && q.push({
                      type: "image",
                      image: V,
                      clipOrigin: vector.add(Z, [0, 0]),
                      clipSize: J,
                      size: [z[0] * tt, z[1]],
                      anchor: [10 - 20 * H / 24, 10 - 20 * W / 24],
                      angle: 0,
                      retina: !0,
                      zooms: [Q[0] - b, Q[Q.length - 1] + p]
                  })
              }
              N && ($ = "曾母暗沙" === N ? (X = "top",
              [0, 5]) : q.length && q[0].image ? (K = D[0],
              T && (X = "bottom",
              $ = [0, 0]),
              "北京" === N ? (X = "top",
              [0, 3]) : "澳门" === N ? (X = "left",
              [0, -2]) : "合肥" === N || "太原" === N || "西安" === N || "郑州" === N || "杭州" === N || "台北" === N || "加德满都" === N ? (X = "bottom",
              [0, -3]) : 10002 !== E || 31 !== U && 32 !== U && 34 !== U && 5 !== U ? 1 === u || "152" !== K && "153" !== K && "154" !== K ? (X = "right",
              [0, -2]) : (X = "center",
              [0, -1]) : (X = "right",
              [-3, -3])) : (X = "center",
              [H, W])),
              (G = this.uA[C = "" + E + U]) ? (i = G.faceColor,
              a = G.borderColor,
              o = G.holoColor) : (i = r.faceColor && Color.normalize(r.faceColor.rgba),
              a = r.borderColor && Color.normalize(r.borderColor.rgba),
              o = 3 === r.showMode ? r.holoColor && Color.normalize(r.holoColor.rgba) : null,
              this.uA[C] = {
                  faceColor: i,
                  borderColor: a,
                  holoColor: o
              }),
              $ = N ? {
                  direction: X,
                  offset: $,
                  $G: L,
                  style: {
                      fontSize: n,
                      strokeWidth: 2,
                      padding: [0, 1, 0, 1],
                      fold: !T && 5 <= x
                  }
              } : {},
              O.opts && (O.opts.icon = q,
              O.opts.text = $),
              V && (this.Fs[V] = 1),
              N && this.Ws(N, L),
              w.push(O),
              r = null
          }
      }
      return w
  }
  ,
  gU.prototype.oV = function(t, e) {
      for (var r = CONSTS.Lj, n = r.file, i = r.size, a = CONSTS.Mp, o = CONSTS.Rp, s = CONSTS.Pp, u = CONSTS.jp, c = [], f = this._opts.scale, l = this.lang, h = (e = void 0 === e ? {} : e) && e.R_ && e.R_.protocol || "https", d = 0, v = t; d < v.length; d++) {
          var g, b = v[d], p = b.path, m = b.rank, y = b.minzoom || a, T = b.maxzoom || o, x = b.shield, w = b.shieldType, A = labelsUtil.tQ(b, l), M = A.name, S = A.$G;
          M && this.Ws(M, S),
          x && ((g = Math.floor(p.length / 2)) < 1 || (b = [p[g - 1], p[g]],
          (p = this.oA(40001, S = w, this.WW)) && (g = 1 < f || 9 < p.fontSize ? p.fontSize : 9,
          w = p.faceColor,
          p = p.iconID,
          y = {
              data: {
                  id: Util.stamp(this),
                  position: b,
                  positionType: "relative",
                  name: M,
                  txt: x,
                  rank: m,
                  BG: A.type,
                  extData: {
                      type: "shield",
                      Lp: 40001,
                      Ap: S
                  }
              },
              opts: {
                  type: "billboard",
                  angle: 0,
                  zooms: [y - s, T + u],
                  visible: !0
              }
          },
          T = this.aA(parseInt(p, 10)),
          p = 1 < x.length / 4 ? x.length / 4 : 1,
          p = {
              type: "image",
              image: h + n[0],
              clipOrigin: T,
              clipSize: i,
              size: [24 * (p = 1 < f ? p : 9 * p / 7), 24],
              anchor: "center",
              angle: 0,
              retina: !0
          },
          w = x ? {
              direction: "center",
              offset: [0, 0],
              style: {
                  fontSize: g,
                  fillColor: w && Color.normalize(w.rgba),
                  strokeWidth: 0,
                  padding: [0, 1, 0, 1]
              }
          } : {},
          y.opts && (y.opts.text = w,
          y.opts.icon = [p]),
          x && this.Ws(x),
          c.push(y))))
      }
      return c
  }
  ,
  gU.prototype.DQ = function(t, e) {
      for (var s, r = CONSTS.Mp, n = CONSTS.Rp, i = CONSTS.Pp, a = CONSTS.jp, o = this.WW = e.zoom, u = [], c = this.lang, f = 0, l = t; f < l.length; f++) {
          var h, d, v, g, b, p, m, y, T, x, w, A = l[f], M = A.id, S = (y = labelsUtil.tQ(A, c)).name, P = y.$G || [];
          S && (h = y.type,
          T = labelsUtil.EQ(S, P),
          d = labelsUtil.aQ(T),
          v = A.rank,
          g = A.Fp,
          b = A.Ep,
          s = A.distance || 0,
          p = A.minzoom || r,
          m = A.maxzoom || n,
          y = (w = (x = this.vn.dn(g, b, o)) && x[1] || {}).fontSize,
          T = w.faceColor,
          x = w.borderColor,
          p = (w = labelsUtil.$p([p, m]))[0],
          m = 20 <= (m = w[1]) ? zoomRange[1] : m,
          S && M && y && T && (b = {
              id: M,
              positionType: "relative",
              name: S,
              $G: P,
              CO: d,
              rank: v,
              BG: h,
              distance: s,
              zooms: [p - i, m + a],
              path: 0 < A.path.length ? A.path : void 0,
              style: {
                  fontSize: y,
                  fillColor: vector.Up(T.rgba, 255),
                  strokeColor: x && vector.Up(x.rgba, 255)
              },
              extData: {
                  mainkey: g,
                  subkey: b
              }
          },
          u.push(b)))
      }
      return u
  }
  ,
  gU.prototype.aA = function(t) {
      var r = (e = CONSTS.Lj).Rj
        , n = e.size
        , e = Math.floor(t / r);
      return t % 10 == 0 && --e,
      [(t - r * e - 1) * n[0], e * n[1]]
  }
  ,
  gU.prototype.oA = function(t, e, r) {
      var n = [3, 20]
        , i = this.vn.dn(t, e, r)
        , a = this.vn.mn(t, e);
      if (!i)
          for (var o = 1; (n[0] <= r - o || r + o <= n[1]) && !(i = (i = this.vn.dn(t, e, r - o)) || this.vn.dn(t, e, r + o)); )
              o++;
      return i && (i.zooms = a),
      i
  }
  ,
  gU.prototype.mN = function(t, e) {
      var r = [0, 0];
      if ("0" === t)
          switch (e) {
          case "3":
              r = [6, 6];
              break;
          case "4":
          case "5":
          case "6":
              r = [9, 9]
          }
      return r
  }
  ,
  gU.prototype.TN = function(t, e, r) {
      var n = r = void 0 === r ? [0, 0] : r;
      if ("0" === t)
          switch (e) {
          case "3":
              n = [30, 30];
              break;
          case "4":
          case "5":
          case "6":
              n = [20, 20]
          }
      return n
  }
  ,
  gU.id = exports.n0.nebulaLabel,
  gU), fU, tX;
  function gU(t) {
      var e = fU.call(this) || this;
      return e.bt = 20,
      e.WW = 20,
      e._opts = {},
      e.uA = {},
      e.vn = t.vn,
      e
  }
  tX = exports.TileState || (exports.TileState = {}),
  tX.TOLOAD = "toload",
  tX.LOADING = "loading",
  tX.LOADED = "loaded",
  tX.UNLOADED = "unloaded",
  tX.ERROR = "error",
  tX.RELOADING = "reloading";
  var TileCoord = (vX = uX,
  uX.prototype.s0 = function(t) {
      var e = t - this.z
        , r = Math.floor(Math.pow(2, e) * this.x)
        , e = Math.floor(Math.pow(2, e) * this.y);
      return new vX(t,r,e)
  }
  ,
  vX = __decorate([InnerClass("TileCoord")], uX),
  vX), vX;
  function uX(t, e, r) {
      this.x = e,
      this.y = r,
      this.z = t,
      this.key = t + "," + e + "," + r
  }
  var Tile = (DX.YH = function(t) {
      return t.status === exports.TileState.LOADED || t.status === exports.TileState.RELOADING
  }
  ,
  DX.prototype.destroy = function() {}
  ,
  DX.prototype.nG = function(t) {
      this.type = t
  }
  ,
  __decorate([InnerClass("Tile")], DX));
  function DX(t) {
      this.type = "tile",
      this.Ro = [0, 0, 0, 0],
      this.stamp = 0,
      this.zo = t,
      this.status = exports.TileState.TOLOAD,
      this._v = null,
      this.data = {}
  }
  var NebulaTile = (HX = Tile,
  __extends(IX, HX),
  Object.defineProperty(IX.prototype, "tag", {
      get: function() {
          return this.nN
      },
      set: function(t) {
          this.aN = this.tag,
          this.nN = t
      },
      enumerable: !1,
      configurable: !0
  }),
  Object.defineProperty(IX.prototype, "gB", {
      get: function() {
          return this.VN
      },
      set: function(t) {
          this.BN = this.gB,
          this.VN = t
      },
      enumerable: !1,
      configurable: !0
  }),
  Object.defineProperty(IX.prototype, "data", {
      get: function() {
          var t = [];
          return this.qc && this.qc.Dc ? t.push(this.qc) : (this.sN && t.push(this.sN),
          this.uN && t.push(this.uN)),
          this.lU && this.lU.Dc ? t.push(this.lU) : (this.fU && t.push(this.fU),
          this.cU && t.push(this.cU)),
          this.zN && this.zN.labels ? t.push(this.zN) : (this.HN && t.push(this.HN),
          this.WN && t.push(this.WN)),
          this.dU && this.dU.labels ? t.push(this.dU) : (this.vU && t.push(this.vU),
          this.gU && t.push(this.gU)),
          t
      },
      set: function(t) {},
      enumerable: !1,
      configurable: !0
  }),
  IX.prototype.xa = function(t, e) {
      if (void 0 === e && (e = exports.zB.ALL),
      Object.keys(t))
          switch (e) {
          case exports.zB.LITE:
              this.uN = exports.Ln(exports.Ln({}, this.uN), t);
              break;
          case exports.zB.LEFT:
              this.sN = exports.Ln(exports.Ln({}, this.sN), t);
              break;
          default:
              exports.zB.ALL,
              this.qc = exports.Ln(exports.Ln({}, this.qc), t)
          }
  }
  ,
  IX.prototype.JE = function(t, e) {
      if (void 0 === e && (e = exports.zB.ALL),
      Object.keys(t))
          switch (e) {
          case exports.zB.LITE:
              this.cU = exports.Ln(exports.Ln({}, this.cU), t);
              break;
          case exports.zB.LEFT:
              this.fU = exports.Ln(exports.Ln({}, this.fU), t);
              break;
          default:
              exports.zB.ALL,
              this.lU = exports.Ln(exports.Ln({}, this.lU), t)
          }
  }
  ,
  IX.prototype.rO = function(t, e) {
      if (void 0 === e && (e = exports.zB.ALL),
      Object.keys(t))
          switch (e) {
          case exports.zB.LITE:
              this.WN = exports.Ln(exports.Ln({}, this.WN), t);
              break;
          case exports.zB.LEFT:
              this.HN = exports.Ln(exports.Ln({}, this.HN), t);
              break;
          default:
              exports.zB.ALL,
              this.zN = exports.Ln(exports.Ln({}, this.zN), t)
          }
  }
  ,
  IX.prototype.qE = function(t, e) {
      if (void 0 === e && (e = exports.zB.ALL),
      Object.keys(t))
          switch (e) {
          case exports.zB.LITE:
              this.gU = exports.Ln(exports.Ln({}, this.gU), t);
              break;
          case exports.zB.LEFT:
              this.vU = exports.Ln(exports.Ln({}, this.vU), t);
              break;
          default:
              exports.zB.ALL,
              this.dU = exports.Ln(exports.Ln({}, this.dU), t)
          }
  }
  ,
  IX.prototype.ID = function(t) {
      t && (t.uN && (this.uN = t.uN),
      t.sN && (this.sN = t.sN),
      t.qc && (this.qc = t.qc),
      t.WN && (this.WN = t.WN),
      t.HN && (this.HN = t.HN),
      t.zN && (this.zN = t.zN))
  }
  ,
  IX.prototype.rN = function() {
      this.aN ? this.nN = this.aN : this.nN = exports.zB.NONE,
      this.BN && (this.VN = this.BN,
      this.nN = exports.zB.NONE)
  }
  ,
  IX.prototype.AB = function() {
      var t = [];
      return this.qc && this.qc.road && this.zN && this.zN.labels ? t.push(this.qc) : (this.sN && this.sN.road && this.HN && this.HN.labels && t.push(this.sN),
      this.uN && this.uN.road && this.WN && this.WN.labels && t.push(this.uN)),
      t
  }
  ,
  IX.prototype.LY = function(t, e) {
      for (var r = 0, n = this.data; r < n.length; r++) {
          var i = n[r];
          i.Dc && i.Dc.upload(t, !0),
          i.$c && i.$c.upload(t, !0),
          i.A_ && i.A_.upload(t, !0),
          i.FD && i.FD.upload(t, !0)
      }
  }
  ,
  IX.prototype.destroy = function() {
      var t = this.data;
      if (t)
          for (var e = 0, r = t; e < r.length; e++) {
              var n = r[e];
              if (n.Dc && (n.Dc.destroy(),
              delete n.Dc),
              n.$c && (n.$c.destroy(),
              delete n.$c),
              n.labels) {
                  for (var i = 0, a = n.labels; i < a.length; i++)
                      a[i].destroy();
                  delete n.labels
              }
              n.Ta = !1,
              delete n.gf
          }
  }
  ,
  IX.prototype.KE = function(t) {
      for (var e, r = this.data, n = [], i = 0, a = t; i < a.length; i++)
          (o = a[i]).road && n.push(o.road);
      for (var o, s = 0, u = r; s < u.length; s++)
          (o = u[s]).XE && (e = o.XE,
          this.pU(n, e))
  }
  ,
  IX.prototype.reload = function() {
      delete this.lU,
      delete this.cU,
      delete this.fU,
      delete this.zN,
      delete this.WN,
      delete this.HN,
      delete this.VN,
      this.BN = exports.zB.NONE
  }
  ,
  IX.prototype.pU = function(t, e) {
      for (var r = 0, n = e; r < n.length; r++) {
          var i = n[r]
            , a = i.id;
          if (i.path)
              break;
          for (var o = 0, s = t; o < s.length; o++) {
              var u = s[o];
              i.path = this.yU(u, a)
          }
      }
  }
  ,
  IX.prototype.yU = function(t, e) {
      for (var r = 0, n = t; r < n.length; r++) {
          var i = n[r];
          if (i.id === e)
              return i.path
      }
  }
  ,
  IX.prototype.oN = function() {
      var t = this.qc;
      return !!(t = Object.keys(t || {})).length && (1 !== t.length || "sdfLoaded" !== t[0])
  }
  ,
  __decorate([InnerClass("NebulaTile")], IX)), HX;
  function IX() {
      var t = null !== HX && HX.apply(this, arguments) || this;
      return t.type = "nebula",
      t.region = "world",
      t.aN = exports.zB.NONE,
      t.BN = exports.zB.NONE,
      t
  }
  var RasterTile = (JY = Tile,
  __extends(KY, JY),
  KY.prototype.destroy = function() {
      var t = this.data;
      t && (t.texture && (t.texture.destroy(),
      delete t.texture),
      t.zs && (t.zs.context.deleteBuffer(t.zs),
      delete t.zs),
      t.Js && (t.Js.destroy(),
      delete t.Js))
  }
  ,
  KY), JY;
  function KY() {
      var t = null !== JY && JY.apply(this, arguments) || this;
      return t.type = "raster",
      t
  }
  var VectorTile = (NY = Tile,
  __extends(OY, NY),
  OY.prototype.destroy = function() {
      var t = this.data;
      t && (t.$c && (t.$c.destroy(),
      delete t.$c),
      t.Uc && delete t.Uc)
  }
  ,
  __decorate([InnerClass("VectorTile")], OY)), NY;
  function OY() {
      var t = null !== NY && NY.apply(this, arguments) || this;
      return t.type = "vector",
      t
  }
  function quickselect(t, e, r, n, i) {
      quickselectStep(t, e, r || 0, n || t.length - 1, i || defaultCompare)
  }
  function quickselectStep(t, e, r, n, i) {
      for (; r < n; ) {
          var a, o, s, u;
          600 < n - r && (a = n - r + 1,
          o = e - r + 1,
          u = Math.log(a),
          s = .5 * Math.exp(2 * u / 3),
          u = .5 * Math.sqrt(u * s * (a - s) / a) * (o - a / 2 < 0 ? -1 : 1),
          quickselectStep(t, e, Math.max(r, Math.floor(e - o * s / a + u)), Math.min(n, Math.floor(e + (a - o) * s / a + u)), i));
          var c = t[e]
            , f = r
            , l = n;
          for (swap(t, r, e),
          0 < i(t[n], c) && swap(t, r, n); f < l; ) {
              for (swap(t, f, l),
              f++,
              l--; i(t[f], c) < 0; )
                  f++;
              for (; 0 < i(t[l], c); )
                  l--
          }
          0 === i(t[r], c) ? swap(t, r, l) : swap(t, ++l, n),
          l <= e && (r = l + 1),
          e <= l && (n = l - 1)
      }
  }
  function swap(t, e, r) {
      var n = t[e];
      t[e] = t[r],
      t[r] = n
  }
  function defaultCompare(t, e) {
      return t < e ? -1 : e < t ? 1 : 0
  }
  var _rbush_2_0_2_rbush = rbush, default_1 = rbush, Status, maa, M;
  function rbush(t, e) {
      if (!(this instanceof rbush))
          return new rbush(t,e);
      this.Bc = Math.max(4, t || 9),
      this.Wc = Math.max(2, Math.ceil(.4 * this.Bc)),
      e && this.Gc(e),
      this.clear()
  }
  function findItem(t, e, r) {
      if (!r)
          return e.indexOf(t);
      for (var n = 0; n < e.length; n++)
          if (r(t, e[n]))
              return n;
      return -1
  }
  function calcBBox(t, e) {
      distBBox(t, 0, t.children.length, e, t)
  }
  function distBBox(t, e, r, n, i) {
      (i = i || createNode(null)).ja = 1 / 0,
      i.Fa = 1 / 0,
      i.Oa = -1 / 0,
      i.Ea = -1 / 0;
      for (var a, o = e; o < r; o++)
          a = t.children[o],
          extend$1(i, t.Zc ? n(a) : a);
      return i
  }
  function extend$1(t, e) {
      return t.ja = Math.min(t.ja, e.ja),
      t.Fa = Math.min(t.Fa, e.Fa),
      t.Oa = Math.max(t.Oa, e.Oa),
      t.Ea = Math.max(t.Ea, e.Ea),
      t
  }
  function compareNodeMinX(t, e) {
      return t.ja - e.ja
  }
  function compareNodeMinY(t, e) {
      return t.Fa - e.Fa
  }
  function bboxArea(t) {
      return (t.Oa - t.ja) * (t.Ea - t.Fa)
  }
  function bboxMargin(t) {
      return t.Oa - t.ja + (t.Ea - t.Fa)
  }
  function enlargedArea(t, e) {
      return (Math.max(e.Oa, t.Oa) - Math.min(e.ja, t.ja)) * (Math.max(e.Ea, t.Ea) - Math.min(e.Fa, t.Fa))
  }
  function intersectionArea(t, e) {
      var r = Math.max(t.ja, e.ja)
        , n = Math.max(t.Fa, e.Fa)
        , i = Math.min(t.Oa, e.Oa)
        , e = Math.min(t.Ea, e.Ea);
      return Math.max(0, i - r) * Math.max(0, e - n)
  }
  function contains(t, e) {
      return t.ja <= e.ja && t.Fa <= e.Fa && e.Oa <= t.Oa && e.Ea <= t.Ea
  }
  function intersects(t, e) {
      return e.ja <= t.Oa && e.Fa <= t.Ea && e.Oa >= t.ja && e.Ea >= t.Fa
  }
  function createNode(t) {
      return {
          children: t,
          height: 1,
          Zc: !0,
          ja: 1 / 0,
          Fa: 1 / 0,
          Oa: -1 / 0,
          Ea: -1 / 0
      }
  }
  function multiSelect(t, e, r, n, i) {
      for (var a, o = [e, r]; o.length; )
          (r = o.pop()) - (e = o.pop()) <= n || (quickselect(t, a = e + Math.ceil((r - e) / n / 2) * n, e, r, i),
          o.push(e, a, a, r))
  }
  function getModule() {
      return M = M || {
          nS: function(clsName, clsText) {
              try {
                  eval(clsText)
              } catch (e) {
                  throw e
              }
          },
          eS: {
              iS: "1661408825245",
              BY: !Browser.DW && config[13]
          }
      },
      M
  }
  rbush.prototype = {
      all: function() {
          return this.qc(this.data, [])
      },
      search: function(t) {
          var e = this.data
            , r = []
            , n = this.Yc;
          if (!intersects(t, e))
              return r;
          for (var i, a, o, s, u = []; e; ) {
              for (i = 0,
              a = e.children.length; i < a; i++)
                  o = e.children[i],
                  intersects(t, s = e.Zc ? n(o) : o) && (e.Zc ? r.push(o) : contains(t, s) ? this.qc(o, r) : u.push(o));
              e = u.pop()
          }
          return r
      },
      Vc: function(t) {
          var e = this.data
            , r = this.Yc;
          if (!intersects(t, e))
              return !1;
          for (var n, i, a, o, s = []; e; ) {
              for (n = 0,
              i = e.children.length; n < i; n++)
                  if (a = e.children[n],
                  intersects(t, o = e.Zc ? r(a) : a)) {
                      if (e.Zc || contains(t, o))
                          return !0;
                      s.push(a)
                  }
              e = s.pop()
          }
          return !1
      },
      load: function(t) {
          if (!t || !t.length)
              return this;
          if (t.length < this.Wc) {
              for (var e = 0, r = t.length; e < r; e++)
                  this.Xc(t[e]);
              return this
          }
          var n, i = this.Hc(t.slice(), 0, t.length - 1, 0);
          return this.data.children.length ? this.data.height === i.height ? this.Jc(this.data, i) : (this.data.height < i.height && (n = this.data,
          this.data = i,
          i = n),
          this.Kc(i, this.data.height - i.height - 1, !0)) : this.data = i,
          this
      },
      Xc: function(t) {
          return t && this.Kc(t, this.data.height - 1),
          this
      },
      clear: function() {
          return this.data = createNode([]),
          this
      },
      remove: function(t, e) {
          if (!t)
              return this;
          for (var r, n, i, a, o = this.data, s = this.Yc(t), u = [], c = []; o || u.length; ) {
              if (o || (o = u.pop(),
              n = u[u.length - 1],
              r = c.pop(),
              a = !0),
              o.Zc && -1 !== (i = findItem(t, o.children, e)))
                  return o.children.splice(i, 1),
                  u.push(o),
                  this.Qc(u),
                  this;
              a || o.Zc || !contains(o, s) ? n ? (r++,
              o = n.children[r],
              a = !1) : o = null : (u.push(o),
              c.push(r),
              o = (n = o).children[r = 0])
          }
          return this
      },
      Yc: function(t) {
          return t
      },
      tf: compareNodeMinX,
      if: compareNodeMinY,
      toJSON: function() {
          return this.data
      },
      ef: function(t) {
          return this.data = t,
          this
      },
      qc: function(t, e) {
          for (var r = []; t; )
              t.Zc ? e.push.apply(e, t.children) : r.push.apply(r, t.children),
              t = r.pop();
          return e
      },
      Hc: function(t, e, r, n) {
          var i, a = r - e + 1, o = this.Bc;
          if (a <= o)
              return calcBBox(i = createNode(t.slice(e, r + 1)), this.Yc),
              i;
          n || (n = Math.ceil(Math.log(a) / Math.log(o)),
          o = Math.ceil(a / Math.pow(o, n - 1))),
          (i = createNode([])).Zc = !1,
          i.height = n;
          var s, u, c, f, l = Math.ceil(a / o), h = l * Math.ceil(Math.sqrt(o));
          for (multiSelect(t, e, r, h, this.tf),
          s = e; s <= r; s += h)
              for (multiSelect(t, s, c = Math.min(s + h - 1, r), l, this.if),
              u = s; u <= c; u += l)
                  f = Math.min(u + l - 1, c),
                  i.children.push(this.Hc(t, u, f, n - 1));
          return calcBBox(i, this.Yc),
          i
      },
      nf: function(t, e, r, n) {
          for (var i, a, o, s, u, c, f, l; n.push(e),
          !e.Zc && n.length - 1 !== r; ) {
              for (f = l = 1 / 0,
              i = 0,
              a = e.children.length; i < a; i++)
                  u = bboxArea(o = e.children[i]),
                  (c = enlargedArea(t, o) - u) < l ? (l = c,
                  f = u < f ? u : f,
                  s = o) : c === l && u < f && (f = u,
                  s = o);
              e = s || e.children[0]
          }
          return e
      },
      Kc: function(t, e, r) {
          var n = this.Yc
            , r = r ? t : n(t)
            , i = [];
          for ((n = this.nf(r, this.data, e, i)).children.push(t),
          extend$1(n, r); 0 <= e && i[e].children.length > this.Bc; )
              this.af(i, e),
              e--;
          this.sf(r, i, e)
      },
      af: function(t, e) {
          var r = t[e]
            , n = r.children.length
            , i = this.Wc;
          this.rf(r, i, n),
          n = this.hf(r, i, n),
          (n = createNode(r.children.splice(n, r.children.length - n))).height = r.height,
          n.Zc = r.Zc,
          calcBBox(r, this.Yc),
          calcBBox(n, this.Yc),
          e ? t[e - 1].children.push(n) : this.Jc(r, n)
      },
      Jc: function(t, e) {
          this.data = createNode([t, e]),
          this.data.height = t.height + 1,
          this.data.Zc = !1,
          calcBBox(this.data, this.Yc)
      },
      hf: function(t, e, r) {
          for (var n, i, a, o, s, u = o = 1 / 0, c = e; c <= r - e; c++)
              i = intersectionArea(n = distBBox(t, 0, c, this.Yc), a = distBBox(t, c, r, this.Yc)),
              a = bboxArea(n) + bboxArea(a),
              i < u ? (u = i,
              s = c,
              o = a < o ? a : o) : i === u && a < o && (o = a,
              s = c);
          return s
      },
      rf: function(t, e, r) {
          var n = t.Zc ? this.tf : compareNodeMinX
            , i = t.Zc ? this.if : compareNodeMinY;
          this.lf(t, e, r, n) < this.lf(t, e, r, i) && t.children.sort(n)
      },
      lf: function(t, e, r, n) {
          t.children.sort(n);
          for (var i, a = this.Yc, o = distBBox(t, 0, e, a), s = distBBox(t, r - e, r, a), u = bboxMargin(o) + bboxMargin(s), c = e; c < r - e; c++)
              i = t.children[c],
              extend$1(o, t.Zc ? a(i) : i),
              u += bboxMargin(o);
          for (c = r - e - 1; e <= c; c--)
              i = t.children[c],
              extend$1(s, t.Zc ? a(i) : i),
              u += bboxMargin(s);
          return u
      },
      sf: function(t, e, r) {
          for (var n = r; 0 <= n; n--)
              extend$1(e[n], t)
      },
      Qc: function(t) {
          for (var e, r = t.length - 1; 0 <= r; r--)
              0 === t[r].children.length ? 0 < r ? (e = t[r - 1].children).splice(e.indexOf(t[r]), 1) : this.clear() : calcBBox(t[r], this.Yc)
      },
      Gc: function(t) {
          var e = ["return a", " - b", ";"];
          this.tf = new Function("a","b",e.join(t[0])),
          this.if = new Function("a","b",e.join(t[1])),
          this.Yc = new Function("a","return {minX: a" + t[0] + ", minY: a" + t[1] + ", maxX: a" + t[2] + ", maxY: a" + t[3] + "};")
      }
  },
  _rbush_2_0_2_rbush.default = default_1,
  maa = Status = Status || {},
  maa.loading = "loading",
  maa.loaded = "loaded";
  var M = getModule()
    , Queue = (naa.prototype.add = function(t, e) {
      for (var r = t.length, n = 0, i = function() {
          (n += 1) === r && e && e()
      }, a = 0, o = t; a < o.length; a++) {
          var s = o[a];
          this._add(s, i)
      }
  }
  ,
  naa.prototype.has = function(t) {
      return (t = this.tT[t]) && t.status === Status.loaded
  }
  ,
  naa.prototype.finish = function(t) {
      if (t = this.tT[t]) {
          t.status = Status.loaded;
          for (var e = 0, r = t.pI; e < r.length; e++) {
              var n = r[e];
              n && n()
          }
      }
  }
  ,
  naa.prototype._add = function(t, e) {
      var r = this.tT[t];
      r ? r.status === Status.loading ? r.pI.push(e) : e() : this.tT[t] = {
          pI: [e],
          status: Status.loading
      }
  }
  ,
  naa);
  function naa() {
      this.tT = {}
  }
  var Module = getModule();
  function InnerClass(e) {
      return function(t) {
          getModule()[e] = t
      }
  }
  getModule().MapboxLabelFormat = MapboxLabelFormat,
  getModule().NebulaLabelFormat = NebulaLabelFormat,
  getModule()._LocalZoom = {
      Ra: 13,
      za: 12,
      Ge: ""
  },
  getModule().Support = Browser,
  getModule().geo = {
      lcs: lcs,
      ProjectionManager: ProjectionManager
  },
  getModule().transform = transform,
  getModule().Util = Util,
  getModule().TileState = exports.TileState,
  getModule().assign = assign,
  getModule().labelsUtil = labelsUtil,
  getModule().LabelsRenderUtil = LabelsRenderUtil,
  getModule().vector = vector,
  getModule().rbush = _rbush_2_0_2_rbush,
  getModule().lodash = {
      map: map,
      find: find,
      assign: assign,
      every: every,
      some: some
  };
  var isSupportFloat32Array = "undefined" != typeof Float32Array;
  isSupportFloat32Array || (window.Float32Array = void 0,
  setMatrixArrayType(Array));
  var EPSILON = 1e-6
    , ARRAY_TYPE = "undefined" != typeof Float32Array ? Float32Array : Array;
  function setMatrixArrayType(t) {
      ARRAY_TYPE = t
  }
  function fromValues(t, e, r, n) {
      var i = new ARRAY_TYPE(4);
      return i[0] = t,
      i[1] = e,
      i[2] = r,
      i[3] = n,
      i
  }
  function create() {
      var t = new ARRAY_TYPE(16);
      return ARRAY_TYPE != Float32Array && (t[1] = 0,
      t[2] = 0,
      t[3] = 0,
      t[4] = 0,
      t[6] = 0,
      t[7] = 0,
      t[8] = 0,
      t[9] = 0,
      t[11] = 0,
      t[12] = 0,
      t[13] = 0,
      t[14] = 0),
      t[0] = 1,
      t[5] = 1,
      t[10] = 1,
      t[15] = 1,
      t
  }
  function identity$1(t) {
      return t[0] = 1,
      t[1] = 0,
      t[2] = 0,
      t[3] = 0,
      t[4] = 0,
      t[5] = 1,
      t[6] = 0,
      t[7] = 0,
      t[8] = 0,
      t[9] = 0,
      t[10] = 1,
      t[11] = 0,
      t[12] = 0,
      t[13] = 0,
      t[14] = 0,
      t[15] = 1,
      t
  }
  function invert(t, e) {
      var r = e[0]
        , n = e[1]
        , i = e[2]
        , a = e[3]
        , o = e[4]
        , s = e[5]
        , u = e[6]
        , c = e[7]
        , f = e[8]
        , l = e[9]
        , h = e[10]
        , d = e[11]
        , v = e[12]
        , g = e[13]
        , b = e[14]
        , p = e[15]
        , m = r * s - n * o
        , y = r * u - i * o
        , T = r * c - a * o
        , x = n * u - i * s
        , w = n * c - a * s
        , A = i * c - a * u
        , M = f * g - l * v
        , S = f * b - h * v
        , P = f * p - d * v
        , I = l * b - h * g
        , $ = l * p - d * g
        , C = h * p - d * b;
      return (e = m * C - y * $ + T * I + x * P - w * S + A * M) ? (t[0] = (s * C - u * $ + c * I) * (e = 1 / e),
      t[1] = (i * $ - n * C - a * I) * e,
      t[2] = (g * A - b * w + p * x) * e,
      t[3] = (h * w - l * A - d * x) * e,
      t[4] = (u * P - o * C - c * S) * e,
      t[5] = (r * C - i * P + a * S) * e,
      t[6] = (b * T - v * A - p * y) * e,
      t[7] = (f * A - h * T + d * y) * e,
      t[8] = (o * $ - s * P + c * M) * e,
      t[9] = (n * P - r * $ - a * M) * e,
      t[10] = (v * w - g * T + p * m) * e,
      t[11] = (l * T - f * w - d * m) * e,
      t[12] = (s * S - o * I - u * M) * e,
      t[13] = (r * I - n * S + i * M) * e,
      t[14] = (g * y - v * x - b * m) * e,
      t[15] = (f * x - l * y + h * m) * e,
      t) : null
  }
  function multiply(t, e, r) {
      var n = e[0]
        , i = e[1]
        , a = e[2]
        , o = e[3]
        , s = e[4]
        , u = e[5]
        , c = e[6]
        , f = e[7]
        , l = e[8]
        , h = e[9]
        , d = e[10]
        , v = e[11]
        , g = e[12]
        , b = e[13]
        , p = e[14]
        , m = e[15]
        , y = r[0]
        , T = r[1]
        , x = r[2]
        , e = r[3];
      return t[0] = y * n + T * s + x * l + e * g,
      t[1] = y * i + T * u + x * h + e * b,
      t[2] = y * a + T * c + x * d + e * p,
      t[3] = y * o + T * f + x * v + e * m,
      y = r[4],
      T = r[5],
      x = r[6],
      e = r[7],
      t[4] = y * n + T * s + x * l + e * g,
      t[5] = y * i + T * u + x * h + e * b,
      t[6] = y * a + T * c + x * d + e * p,
      t[7] = y * o + T * f + x * v + e * m,
      y = r[8],
      T = r[9],
      x = r[10],
      e = r[11],
      t[8] = y * n + T * s + x * l + e * g,
      t[9] = y * i + T * u + x * h + e * b,
      t[10] = y * a + T * c + x * d + e * p,
      t[11] = y * o + T * f + x * v + e * m,
      y = r[12],
      T = r[13],
      x = r[14],
      e = r[15],
      t[12] = y * n + T * s + x * l + e * g,
      t[13] = y * i + T * u + x * h + e * b,
      t[14] = y * a + T * c + x * d + e * p,
      t[15] = y * o + T * f + x * v + e * m,
      t
  }
  function getTranslation(t, e) {
      return t[0] = e[12],
      t[1] = e[13],
      t[2] = e[14],
      t
  }
  function perspective(t, e, r, n, i) {
      return e = 1 / Math.tan(e / 2),
      t[0] = e / r,
      t[1] = 0,
      t[2] = 0,
      t[3] = 0,
      t[4] = 0,
      t[5] = e,
      t[6] = 0,
      t[7] = 0,
      t[8] = 0,
      t[9] = 0,
      t[11] = -1,
      t[12] = 0,
      t[13] = 0,
      t[15] = 0,
      null != i && i !== 1 / 0 ? (t[10] = (i + n) * (e = 1 / (n - i)),
      t[14] = 2 * i * n * e) : (t[10] = -1,
      t[14] = -2 * n),
      t
  }
  function ortho(t, e, r, n, i, a, o) {
      var s = 1 / (e - r)
        , u = 1 / (n - i)
        , c = 1 / (a - o);
      return t[0] = -2 * s,
      t[1] = 0,
      t[2] = 0,
      t[3] = 0,
      t[4] = 0,
      t[5] = -2 * u,
      t[6] = 0,
      t[7] = 0,
      t[8] = 0,
      t[9] = 0,
      t[10] = 2 * c,
      t[11] = 0,
      t[12] = (e + r) * s,
      t[13] = (i + n) * u,
      t[14] = (o + a) * c,
      t[15] = 1,
      t
  }
  function lookAt(t, e, r, n) {
      var i, a = e[0], o = e[1], s = e[2], u = n[0], c = n[1], f = n[2], l = r[0], h = r[1], d = r[2];
      return Math.abs(a - l) < EPSILON && Math.abs(o - h) < EPSILON && Math.abs(s - d) < EPSILON ? identity$1(t) : (i = a - l,
      e = o - h,
      n = s - d,
      l = c * (n *= r = 1 / Math.hypot(i, e, n)) - f * (e *= r),
      h = f * (i *= r) - u * n,
      d = u * e - c * i,
      (r = Math.hypot(l, h, d)) ? (l *= r = 1 / r,
      h *= r,
      d *= r) : d = h = l = 0,
      f = e * d - n * h,
      u = n * l - i * d,
      c = i * h - e * l,
      (r = Math.hypot(f, u, c)) ? (f *= r = 1 / r,
      u *= r,
      c *= r) : c = u = f = 0,
      t[0] = l,
      t[1] = f,
      t[2] = i,
      t[3] = 0,
      t[4] = h,
      t[5] = u,
      t[6] = e,
      t[7] = 0,
      t[8] = d,
      t[9] = c,
      t[10] = n,
      t[11] = 0,
      t[12] = -(l * a + h * o + d * s),
      t[13] = -(f * a + u * o + c * s),
      t[14] = -(i * a + e * o + n * s),
      t[15] = 1,
      t)
  }
  function equals(t, e) {
      var r = t[0]
        , n = t[1]
        , i = t[2]
        , a = t[3]
        , o = t[4]
        , s = t[5]
        , u = t[6]
        , c = t[7]
        , f = t[8]
        , l = t[9]
        , h = t[10]
        , d = t[11]
        , v = t[12]
        , g = t[13]
        , b = t[14]
        , p = t[15]
        , m = e[0]
        , y = e[1]
        , T = e[2]
        , x = e[3]
        , w = e[4]
        , A = e[5]
        , M = e[6]
        , S = e[7]
        , P = e[8]
        , I = e[9]
        , $ = e[10]
        , C = e[11]
        , k = e[12]
        , N = e[13]
        , t = e[14]
        , e = e[15];
      return Math.abs(r - m) <= EPSILON * Math.max(1, Math.abs(r), Math.abs(m)) && Math.abs(n - y) <= EPSILON * Math.max(1, Math.abs(n), Math.abs(y)) && Math.abs(i - T) <= EPSILON * Math.max(1, Math.abs(i), Math.abs(T)) && Math.abs(a - x) <= EPSILON * Math.max(1, Math.abs(a), Math.abs(x)) && Math.abs(o - w) <= EPSILON * Math.max(1, Math.abs(o), Math.abs(w)) && Math.abs(s - A) <= EPSILON * Math.max(1, Math.abs(s), Math.abs(A)) && Math.abs(u - M) <= EPSILON * Math.max(1, Math.abs(u), Math.abs(M)) && Math.abs(c - S) <= EPSILON * Math.max(1, Math.abs(c), Math.abs(S)) && Math.abs(f - P) <= EPSILON * Math.max(1, Math.abs(f), Math.abs(P)) && Math.abs(l - I) <= EPSILON * Math.max(1, Math.abs(l), Math.abs(I)) && Math.abs(h - $) <= EPSILON * Math.max(1, Math.abs(h), Math.abs($)) && Math.abs(d - C) <= EPSILON * Math.max(1, Math.abs(d), Math.abs(C)) && Math.abs(v - k) <= EPSILON * Math.max(1, Math.abs(v), Math.abs(k)) && Math.abs(g - N) <= EPSILON * Math.max(1, Math.abs(g), Math.abs(N)) && Math.abs(b - t) <= EPSILON * Math.max(1, Math.abs(b), Math.abs(t)) && Math.abs(p - e) <= EPSILON * Math.max(1, Math.abs(p), Math.abs(e))
  }
  function create$1() {
      var t = new ARRAY_TYPE(3);
      return ARRAY_TYPE != Float32Array && (t[0] = 0,
      t[1] = 0,
      t[2] = 0),
      t
  }
  function fromValues$1(t, e, r) {
      var n = new ARRAY_TYPE(3);
      return n[0] = t,
      n[1] = e,
      n[2] = r,
      n
  }
  function copy(t, e) {
      return t[0] = e[0],
      t[1] = e[1],
      t[2] = e[2],
      t
  }
  function set(t, e, r, n) {
      return t[0] = e,
      t[1] = r,
      t[2] = n,
      t
  }
  function subtract(t, e, r) {
      return t[0] = e[0] - r[0],
      t[1] = e[1] - r[1],
      t[2] = e[2] - r[2],
      t
  }
  function cross(t, e, r) {
      var n = e[0]
        , i = e[1]
        , a = e[2]
        , o = r[0]
        , e = r[1]
        , r = r[2];
      return t[0] = i * r - a * e,
      t[1] = a * o - n * r,
      t[2] = n * e - i * o,
      t
  }
  Math.hypot || (Math.hypot = function() {
      for (var t = 0, e = arguments.length; e--; )
          t += arguments[e] * arguments[e];
      return Math.sqrt(t)
  }
  );
  var sub = subtract, forEach$1 = (J1a = create$1(),
  function(t, e, r, n, i, a) {
      var o, s;
      for (e = e || 3,
      r = r || 0,
      s = n ? Math.min(n * e + r, t.length) : t.length,
      o = r; o < s; o += e)
          J1a[0] = t[o],
          J1a[1] = t[o + 1],
          J1a[2] = t[o + 2],
          i(J1a, J1a, a),
          t[o] = J1a[0],
          t[o + 1] = J1a[1],
          t[o + 2] = J1a[2];
      return t
  }
  ), J1a;
  function create$2() {
      var t = new ARRAY_TYPE(4);
      return ARRAY_TYPE != Float32Array && (t[0] = 0,
      t[1] = 0,
      t[2] = 0,
      t[3] = 0),
      t
  }
  function fromValues$2(t, e, r, n) {
      var i = new ARRAY_TYPE(4);
      return i[0] = t,
      i[1] = e,
      i[2] = r,
      i[3] = n,
      i
  }
  function scale$1(t, e, r) {
      return t[0] = e[0] * r,
      t[1] = e[1] * r,
      t[2] = e[2] * r,
      t[3] = e[3] * r,
      t
  }
  function transformMat4(t, e, r) {
      var n = e[0]
        , i = e[1]
        , a = e[2]
        , e = e[3];
      return t[0] = r[0] * n + r[4] * i + r[8] * a + r[12] * e,
      t[1] = r[1] * n + r[5] * i + r[9] * a + r[13] * e,
      t[2] = r[2] * n + r[6] * i + r[10] * a + r[14] * e,
      t[3] = r[3] * n + r[7] * i + r[11] * a + r[15] * e,
      t
  }
  var forEach$2 = (gca = create$2(),
  function(t, e, r, n, i, a) {
      var o, s;
      for (e = e || 4,
      r = r || 0,
      s = n ? Math.min(n * e + r, t.length) : t.length,
      o = r; o < s; o += e)
          gca[0] = t[o],
          gca[1] = t[o + 1],
          gca[2] = t[o + 2],
          gca[3] = t[o + 3],
          i(gca, gca, a),
          t[o] = gca[0],
          t[o + 1] = gca[1],
          t[o + 2] = gca[2],
          t[o + 3] = gca[3];
      return t
  }
  ), gca;
  function create$3() {
      var t = new ARRAY_TYPE(2);
      return ARRAY_TYPE != Float32Array && (t[0] = 0,
      t[1] = 0),
      t
  }
  function clone$1(t) {
      var e = new ARRAY_TYPE(2);
      return e[0] = t[0],
      e[1] = t[1],
      e
  }
  function fromValues$3(t, e) {
      var r = new ARRAY_TYPE(2);
      return r[0] = t,
      r[1] = e,
      r
  }
  function copy$1(t, e) {
      return t[0] = e[0],
      t[1] = e[1],
      t
  }
  function set$1(t, e, r) {
      return t[0] = e,
      t[1] = r,
      t
  }
  function add(t, e, r) {
      return t[0] = e[0] + r[0],
      t[1] = e[1] + r[1],
      t
  }
  function subtract$1(t, e, r) {
      return t[0] = e[0] - r[0],
      t[1] = e[1] - r[1],
      t
  }
  function multiply$1(t, e, r) {
      return t[0] = e[0] * r[0],
      t[1] = e[1] * r[1],
      t
  }
  function scale$2(t, e, r) {
      return t[0] = e[0] * r,
      t[1] = e[1] * r,
      t
  }
  function distance(t, e) {
      var r = e[0] - t[0]
        , t = e[1] - t[1];
      return Math.hypot(r, t)
  }
  function negate(t, e) {
      return t[0] = -e[0],
      t[1] = -e[1],
      t
  }
  function normalize(t, e) {
      var r = e[0]
        , n = e[1];
      return 0 < (n = r * r + n * n) && (n = 1 / Math.sqrt(n)),
      t[0] = e[0] * n,
      t[1] = e[1] * n,
      t
  }
  function dot(t, e) {
      return t[0] * e[0] + t[1] * e[1]
  }
  function cross$1(t, e, r) {
      return r = e[0] * r[1] - e[1] * r[0],
      t[0] = t[1] = 0,
      t[2] = r,
      t
  }
  function transformMat2(t, e, r) {
      var n = e[0]
        , e = e[1];
      return t[0] = r[0] * n + r[2] * e,
      t[1] = r[1] * n + r[3] * e,
      t
  }
  function rotate(t, e, r, n) {
      var i = e[0] - r[0]
        , a = e[1] - r[1]
        , e = Math.sin(n)
        , n = Math.cos(n);
      return t[0] = i * n - a * e + r[0],
      t[1] = i * e + a * n + r[1],
      t
  }
  function angle(t, e) {
      var r = t[0]
        , n = t[1]
        , i = e[0]
        , a = e[1]
        , e = i * i + a * a;
      return 1 < (e = (r * i + n * a) * (t = 0 < (t = r * r + n * n) ? 1 / Math.sqrt(t) : t) * (0 < e ? 1 / Math.sqrt(e) : e)) ? 0 : e < -1 ? Math.PI : Math.acos(e)
  }
  function equals$1(t, e) {
      var r = t[0]
        , n = t[1]
        , t = e[0]
        , e = e[1];
      return Math.abs(r - t) <= EPSILON * Math.max(1, Math.abs(r), Math.abs(t)) && Math.abs(n - e) <= EPSILON * Math.max(1, Math.abs(n), Math.abs(e))
  }
  var sub$1 = subtract$1, mul = multiply$1, dist$1 = distance, forEach$3 = (D2a = create$3(),
  function(t, e, r, n, i, a) {
      var o, s;
      for (e = e || 2,
      r = r || 0,
      s = n ? Math.min(n * e + r, t.length) : t.length,
      o = r; o < s; o += e)
          D2a[0] = t[o],
          D2a[1] = t[o + 1],
          i(D2a, D2a, a),
          t[o] = D2a[0],
          t[o + 1] = D2a[1];
      return t
  }
  ), D2a, Event = (M2a.addListener = function(t, e, r) {
      t.on(e, r)
  }
  ,
  M2a.trigger = function(t, e, r) {
      t.emit(e, r)
  }
  ,
  M2a.clearListeners = function(t, e) {
      t.clearEvents(e)
  }
  ,
  M2a.addDomListener = function(t, e, r) {
      t.addEventListener(e, r)
  }
  ,
  M2a.extend = function(t, r, n) {
      forEach(t = "string" == typeof t ? [t] : t, function(e) {
          r.on(e, function(t) {
              n.emit(e, t)
          })
      })
  }
  ,
  M2a.prototype.on = function(t, e, r, n) {
      void 0 === r && (r = this),
      void 0 === n && (n = !1);
      for (var i = 0, a = Array.isArray(t) ? t : [t]; i < a.length; i++) {
          var o = a[i];
          this._on(o, e, r, n)
      }
      return this
  }
  ,
  M2a.prototype.off = function(t, e, r) {
      void 0 === r && (r = this);
      var n = this.vI;
      if (t in n)
          for (var i = 0; i < n[t].length; i += 1)
              if (n[t][i].fn === e && n[t][i].context === r)
                  return n[t].splice(i, 1),
                  this;
      return this
  }
  ,
  M2a.prototype.hasEvents = function(t, e, r) {
      void 0 === r && (r = this);
      var n = this.vI;
      if (t && e && t in n)
          for (var i = 0; i < n[t].length; i += 1)
              if (n[t][i].fn === e && n[t][i].context === r)
                  return !0;
      return !1
  }
  ,
  M2a.prototype.clearEvents = function(t) {
      return t ? this.vI[t] && delete this.vI[t] : this.vI = {},
      this
  }
  ,
  M2a.prototype.emit = function(t, e) {
      if (void 0 === e && (e = {}),
      !(t in this.vI))
          return this;
      for (var r = exports.Ln(exports.Ln({}, e), {
          type: t
      }), n = this.vI[t], i = 0, a = n.length; i < a; i += 1) {
          var o = n[i];
          o.fn && (o.fn.call(o.context, r),
          o.once && (this.vI[t].splice(i, 1),
          --i,
          --a))
      }
      return 0 === n.length && delete this.vI[t],
      this
  }
  ,
  M2a.prototype.getEvents = function() {
      return this.vI
  }
  ,
  M2a.prototype._on = function(t, e, r, n) {
      if (void 0 === n && (n = !1),
      this.hasEvents(t, e, r = void 0 === r ? this : r))
          return this;
      var i = this.vI;
      return i[t] = i[t] || [],
      i[t].push({
          fn: e,
          context: r || this,
          once: n
      }),
      this
  }
  ,
  M2a);
  function M2a() {
      this.vI = {}
  }
  var NebulaTileCoord = (Gda = [-180, -90],
  Hda = [180, 90],
  Ida = Hda[0] - Gda[0],
  Jda = Hda[1] - Gda[1],
  {
      ga: function(t, e, r, n) {
          void 0 === n && (n = "lnglat");
          var i = Math.pow(2, r)
            , a = Ida / i
            , r = Jda / i
            , i = ProjectionManager.getProjection("EPSG:3857");
          return "lnglat" === n ? [t * a + Gda[0], Hda[1] - e * r, (t + 1) * a + Gda[0], Hda[1] - (e + 1) * r] : "EPSG:3857" !== n ? [0, 0, 0, 0] : (n = i.project(t * a + Gda[0], Hda[1] - e * r),
          r = i.project((t + 1) * a + Gda[0], Hda[1] - (e + 1) * r),
          [n[0], n[1], r[0], r[1]])
      }
  }), Gda, Hda, Ida, Jda, ComputeTileRange = (Vda.ha = function(t, e) {
      for (var r = [t[0], t[3]], n = [t[2], t[1]], t = this.Ga(r, e), r = this.Ga(n, e), n = t[0], i = t[1], a = r[0], o = r[1], s = [], u = n; u <= a; u += 1)
          for (var c = i; c <= o; c += 1)
              s.push([e, u, c]);
      return s
  }
  ,
  Vda.Ga = function(t, e) {
      var r = Math.pow(2, e)
        , e = 180 / r;
      return [Math.floor(t[0] / (360 / r)) + r / 2, r / 2 - Math.ceil(t[1] / e)]
  }
  ,
  Vda.ra = function(t) {
      return {
          2: 3,
          3: 3,
          4: 3,
          5: 3,
          6: 6,
          7: 6,
          8: 8,
          9: 8,
          10: 10,
          11: 10,
          12: 10,
          13: 12,
          14: 12,
          15: 14,
          16: 14,
          17: 14,
          18: 14,
          19: 14,
          20: 14,
          21: 14,
          22: 14
      }[t]
  }
  ,
  Vda);
  function Vda() {}
  var Task = (q3a.prototype._H = function(t) {
      this.children.push(t)
  }
  ,
  q3a);
  function q3a(t) {
      var r = this;
      this.xN = t,
      this.cancel = function() {
          r.xN && r.xN.cancel();
          for (var t = 0, e = r.children; t < e.length; t++)
              e[t].cancel.apply(r)
      }
      ,
      this.children = []
  }
  var LabelPlacement = (x3a.prototype.nO = function(t, e) {
      this.iO = (e = void 0 === e ? {} : e).from || "inner",
      labelsUtil.zj(this, t),
      this.eO(e)
  }
  ,
  x3a.prototype.destroy = function() {}
  ,
  x3a.prototype.oO = function() {
      return this.gs.aO()
  }
  ,
  x3a.prototype.uO = function() {
      return this.oO().viewMode,
      !0
  }
  ,
  x3a.prototype.eO = function(t) {
      var e, r, n, i, a, o = (t = void 0 === t ? {} : t).center, s = this.Gj || {}, u = this.Vj || {}, c = this.Hj || {}, f = this.iO, l = 0;
      for (e in s)
          s.hasOwnProperty(e) && e && (a = s[e] || {},
          c[e] = this.sO(e, a),
          u[e] = this.fO(e, a, c[e], {
              from: f,
              center: o
          }),
          r = a.data.txt,
          n = (i = a.opts).icon,
          i = i.text || {},
          a = a.CO,
          r && a && (l += a.length + 1,
          i.style && i.style.borderWidth && (l += 4)),
          n && n.length && n[0].image && (l += n.length));
      this.$j = l,
      this.Vj = u,
      this.Hj = c
  }
  ,
  x3a.prototype.hO = function(t, e) {
      var r = CONSTS.Mp
        , n = CONSTS.Rp
        , i = (t = void 0 === t ? [] : t)[0] || r
        , t = t[1] || n;
      return [(r = (e = void 0 === e ? [] : e)[0] || r) < i ? i : r, t < (n = e[1] || n) ? t : n]
  }
  ,
  x3a.prototype.cO = function(t, e) {
      var r = {};
      return r.type = (t = void 0 === t ? {} : t).type || e.type,
      r.image = t.image || "",
      r.clipOrigin = t.clipOrigin || e.clipOrigin,
      r.clipSize = t.clipSize,
      r.size = t.size,
      r.offset = t.offset,
      r.anchor = t.anchor || e.anchor,
      r.angel = t.angel || e.angel,
      r.retina = t.retina || e.retina,
      r.zooms = t.zooms || e.zooms,
      r
  }
  ,
  x3a.prototype.vO = function(t, e) {
      var r = {};
      r.type = (t = void 0 === t ? {} : t).type || e.type,
      r.direction = t.direction || e.direction,
      r.offset = t.offset || e.offset,
      r.zooms = t.zooms || e.zooms;
      var n = e.style
        , i = t.style || {};
      return r.style = {},
      r.style.fontFamily = i.fontFamily || n.fontFamily,
      r.style.fontSize = i.fontSize || n.fontSize,
      r.style.fontWeight = i.fontWeight || n.fontWeight,
      r.style.fillColor = i.fillColor || n.fillColor,
      e = i.strokeColor,
      isUndefined(t = i.strokeWidth) && isUndefined(e) ? r.style.strokeWidth = n.strokeWidth : isUndefined(t) && !isUndefined(e) ? r.style.strokeWidth = 1 : r.style.strokeWidth = i.strokeWidth,
      r.style.borderColor = i.borderColor,
      r.style.borderWidth = i.borderWidth,
      r.style.strokeColor = i.strokeColor || n.strokeColor,
      r.style.borderColor = i.borderColor || n.borderColor,
      r.style.backgroundColor = i.backgroundColor,
      r.style.padding = i.padding || n.padding,
      r.style.fold = void 0 !== i.fold && i.fold,
      r
  }
  ,
  x3a.prototype.lO = function(t) {
      return [(t = (this.ac.Fs || {})[t] || {}).width || 36, t.height || 36]
  }
  ,
  x3a.prototype.dO = function(t, e) {
      var r = CONSTS.sj;
      return (r = this.cO(t, r.icon)).zooms = t.zooms || e.bO,
      e = this.hO(e.zooms, r.zooms),
      r.zooms = e,
      r.size && r.clipSize || (t = (e = this.lO(t.image || ""))[0] || 0,
      e = e[1] || 0,
      r.size || (r.size = [t, e]),
      r.clipSize || (r.clipSize = [t, e])),
      r
  }
  ,
  x3a.prototype.pO = function(t, e) {
      var r = CONSTS.sj
        , n = this.vO(t = void 0 === t ? {} : t, r.text);
      return n.zooms = t.zooms || e.bO,
      r = n.direction,
      t = e.yO,
      t = (r = this.mO(r || "", t)).textAlign,
      r = r.verticalAlign,
      n.style && (n.style.textAlign = t,
      n.style.verticalAlign = r),
      e = this.hO(e.zooms, n.zooms),
      n.zooms = e,
      n
  }
  ,
  x3a.prototype.sO = function(t, e) {
      var n = (r = e.data) && r.txt
        , a = (i = e.opts || {}).angle || 0
        , o = isUndefined(i.opacity) ? 1 : i.opacity
        , s = i.icon
        , r = i.text
        , e = i.zooms
        , i = i.visible
        , u = {
          angle: a,
          opacity: o,
          zooms: this.options.zooms,
          bO: e
      }
        , c = [];
      if (s)
          for (var f = 0, l = s; f < l.length; f++) {
              var h = l[f];
              c.push(this.dO(h, u))
          }
      return u.yO = !!s,
      (r = n ? this.pO(r, u) : null) && (r.txt = n),
      i = {
          icon: c,
          text: r,
          visible: i
      },
      "labelsLayer" === this.iO && (i.showText = 1,
      i.showIcon = 1),
      i
  }
  ,
  x3a.prototype.gO = function(t) {
      if (this.oO().zoom < LocalZoom)
          return t;
      var e = lcs.getLocalByCoord(t);
      return vector.Ip(t, e.center)
  }
  ,
  x3a.prototype.wO = function(t, e) {
      if (!e || !e.image)
          return {
              size: [0, 0],
              origin: t,
              anchorOffset: [0, 0],
              coords: t
          };
      var r = CONSTS.sj.icon
        , n = e.size || this.lO(e.image)
        , r = e.anchor || r.anchor;
      return {
          size: n,
          origin: t,
          anchorOffset: r = this._getAnchorOffset(n, r),
          coords: vector.add(t, r)
      }
  }
  ,
  x3a.prototype.MO = function(t, u, r) {
      if ("text" !== (t = void 0 === t ? "icon" : t))
          return i = u.size,
          u.coords,
          {
              x: (a = u.c)[0],
              y: a[1],
              width: (i = void 0 === i ? [] : i)[0] || 0,
              height: i[1] || 0
          };
      var n = u.origin
        , i = (u.start,
      r.padding)
        , a = r.c
        , o = void 0
        , u = i.offsetX
        , t = i.offsetY
        , r = i.w
        , i = i.h
        , s = this.uO() ? (o = a[0],
      a[1]) : (o = n[0],
      n[1]);
      return {
          x: o + u,
          y: s + t,
          width: r,
          height: i
      }
  }
  ,
  x3a.prototype._getAnchorOffset = function(t, e) {
      var r = CONSTS.JM
        , n = t[0] || 0
        , i = t[1] || 0;
      if ("[object Array]" === Object.prototype.toString.apply(e)) {
          var t = e[0]
            , a = e[1];
          if ("number" == typeof t && "number" == typeof a)
              return vector.tA(e)
      } else if ("string" == typeof e) {
          var e = (a = e.split("-"))[0]
            , a = a[1]
            , o = 0
            , s = 0;
          switch (e !== r.ij || a || (e = r.nj,
          a = r.ij),
          a) {
          case r.LEFT:
              o = 0;
              break;
          case r.ij:
              o = -n / 2;
              break;
          case r.QM:
              o = -n;
              break;
          default:
              o = 0
          }
          switch (e) {
          case r.ZM:
              s = 0;
              break;
          case r.nj:
              s = -i / 2;
              break;
          case r.tj:
              s = -i;
              break;
          default:
              s = 0
          }
          return [o, s]
      }
      return [0, 0]
  }
  ,
  x3a.prototype.jO = function(t) {
      return this._getAnchorOffset(t.size || [0, 0], "middle-center")
  }
  ,
  x3a.prototype.AO = function(t, e, r, n) {
      var i, o = CONSTS.JM, s = (n = void 0 === n ? {} : n).kO, u = void 0 === s ? 0 : s, f = void 0 !== (c = n.yO) && c, l = n.padding, h = n.lines, c = (s = this.jO(t))[0] || 0, n = s[1] || 0, d = (s = t.anchorOffset || [])[0] || 0, v = s[1] || 0, g = (t = t.size || [])[0] || 0, b = t[1] || 0, p = d - c, m = v - n, y = l[0], T = l[1], x = l[2], w = l[3], A = .8 * u;
      switch (r) {
      case o.ZM:
          a = f ? (i = p,
          v - x - .2 * u - (M = A * h + 3 * (h - 1))) : (i = d + w,
          v + y);
          break;
      case o.QM:
          var M = A / 2 * h + 1.5 * (h - 1)
            , a = f ? (i = d + g + w,
          m - M) : (i = d - T,
          v - M - x);
          break;
      case o.tj:
          a = f ? (i = p,
          v + b + y) : (i = d + w,
          v - x - (M = A * h + 3 * (h - 1)));
          break;
      case o.LEFT:
          M = A / 2 * h + 1.5 * (h - 1);
          a = f ? (i = d - T,
          m - M) : (i = d + w,
          v - M - x);
          break;
      case o.nj:
      case o.ij:
          a = f ? (i = d + g / 2,
          m - (M = A / 2 * h + 1.5 * (h - 1))) : (i = d,
          v - (M = A / 2 * h + 1.5 * (h - 1)) - x);
          break;
      default:
          i = d,
          a = v - (M = A / 2 * h + 1.5 * (h - 1)) - x
      }
      return [i, a]
  }
  ,
  x3a.prototype.OO = function(t, e) {
      var r, n, i = CONSTS.JM, a = (e = void 0 === e ? {} : e).xO, o = (e.kO,
      e.yO), s = e.direction, u = e.lines, c = e.size, f = (e.IO,
      t[0] || 0), l = t[1] || 0;
      switch (this.mO(s, o).textAlign) {
      case i.LEFT:
          r = f,
          n = l;
          break;
      case i.QM:
          r = f - a,
          n = l;
          break;
      case i.ij:
          r = f - a / 2,
          n = l
      }
      return {
          x: r,
          y: n,
          w: a,
          h: this.TO(c, u),
          FO: f,
          _O: l
      }
  }
  ,
  x3a.prototype.mO = function(t, e) {
      var r, n, i = CONSTS.JM;
      if (e)
          switch (t) {
          case i.LEFT:
              r = i.QM;
              break;
          case i.QM:
              r = i.LEFT;
              break;
          case i.ZM:
          case i.tj:
          default:
              r = i.ij,
              n = i.tj
          }
      else
          switch (t) {
          case i.LEFT:
          case i.ij:
          case i.QM:
              r = t,
              n = i.tj;
              break;
          case i.ZM:
          case i.tj:
          case i.nj:
          default:
              r = i.LEFT,
              n = t
          }
      return {
          textAlign: r,
          verticalAlign: n
      }
  }
  ,
  x3a.prototype.TO = function(t, e) {
      return void 0 === t && (t = 12),
      (t *= 5 / 4) * (e = void 0 === e ? 1 : e) + 3 * (e - 1)
  }
  ,
  x3a.prototype.CT = function(t, e) {
      return this.Mf ? this.Mf.measureText(t, e) : this.NT ? (this.NT.font = (e || 12) + "px",
      this.NT.measureText(t.join("")).width) : 0
  }
  ,
  x3a.prototype.SO = function(t, e, r) {
      if (!e || !r.txt)
          return {
              origin: t.origin,
              offset: [0, 0],
              coords: t.coords,
              start: {}
          };
      var i = (n = CONSTS.sj.text).direction
        , a = n.offset
        , o = n.style
        , s = r.yO
        , u = r.CO
        , c = e.direction || i
        , f = e.offset || a
        , i = (n = e.style || o).fontSize || 12
        , a = n.padding || o.padding
        , e = !1 === n.fold ? 100 : o.fj
        , n = r.txt.length
        , u = (o = this.Mf.lineBreak(r.txt, {
          fontSize: i,
          CO: u,
          type: r.BG || "ch",
          fj: e,
          YQ: this.NT,
          from: r.from
      })).lines.length
        , r = this.TO(i, 1)
        , n = {
          xO: o.maxWidth,
          kO: r,
          yO: s,
          direction: c,
          padding: a,
          fj: e,
          lines: u,
          size: i,
          IO: n
      }
        , c = this.AO(t, t.size, c, n)
        , c = vector.add(c, f)
        , f = vector.add(t.origin, c)
        , n = this.OO(f, n);
      return {
          origin: t.origin,
          offset: c,
          coords: f,
          start: n
      }
  }
  ,
  x3a.prototype.EO = function(t, e, r) {
      if (!e || !r.txt)
          return {
              offsetX: 0,
              offsetY: 0,
              w: 0,
              h: 0
          };
      var n, i, a = CONSTS.JM, o = CONSTS.sj, s = (t.coords,
      t.start), u = (t = void 0 === (t = t.offset) ? [] : t)[0], c = t[1], f = s.w, t = s.h, s = r.yO, o = (r = o.text).direction, r = r.style, o = e.direction || o, l = (e = (e.style || r).padding || r.padding)[0], r = e[1], h = e[2], d = e[3];
      if (s)
          switch (o) {
          case a.ZM:
              n = u - f / 2 - d,
              i = c - l;
              break;
          case a.QM:
              n = u - d,
              i = c - l;
              break;
          case a.tj:
              n = u - f / 2 - d,
              i = c - l;
              break;
          case a.LEFT:
              n = u - f - d,
              i = c - l;
              break;
          case a.nj:
          case a.ij:
              n = u - f / 2 - d,
              i = c - l;
              break;
          default:
              n = u - f / 2 - d,
              i = c + h
          }
      else
          switch (o) {
          case a.ZM:
              n = u - d,
              i = c + h;
              break;
          case a.QM:
              n = u - f - d,
              i = c + h;
              break;
          case a.tj:
          case a.LEFT:
              n = u - d,
              i = c + h;
              break;
          case a.nj:
          case a.ij:
              n = u - f / 2 - d,
              i = c - l;
              break;
          default:
              n = u - f / 2 - d,
              i = c + h
          }
      return {
          offsetX: n,
          offsetY: i,
          w: f + d + r,
          h: t + l + h
      }
  }
  ,
  x3a.prototype.fO = function(t, e, r, n) {
      var i = (n = void 0 === n ? {} : n).from
        , a = n.center
        , o = e.data
        , s = e.opts || {}
        , u = o.position
        , c = o.txt
        , f = s.icon
        , s = r.text
        , r = e.CO
        , e = this.oO().zoom;
      return a[2] = a[2] || 0,
      e = "inner" !== i || "relative" !== o.positionType && LocalZoom <= e ? vector.Ip(u, a) : u,
      a = vector.add(e, [0, 0]),
      u = !!f,
      {
          origin: e,
          icon: f = this.wO(a, f && f[0]),
          text: n = this.SO(f, s, {
              CO: r,
              txt: c,
              yO: u,
              BG: o.BG,
              from: n.from
          }),
          padding: this.EO(n, s, {
              txt: c,
              yO: u
          })
      }
  }
  ,
  x3a);
  function x3a(t) {
      this.options = {},
      this.Gj = {},
      this.Hj = {},
      this.Vj = {},
      this.Wj = {},
      this.$j = 0,
      this.render = null,
      this.NO = {},
      this.ac = t.z_,
      this.Mf = t.R_,
      this.io = t.canvas,
      this.NT = t.Nz
  }
  var LabelGroup = (oga.prototype.nT = function(t) {
      if (!t)
          return "";
      var e = t.fontSize
        , n = void 0 === (r = t.fillColor) ? CONSTS.COLOR.Uj : r
        , a = void 0 === (i = t.strokeColor) ? CONSTS.COLOR.Uj : i
        , r = t.strokeWidth
        , i = t.backgroundColor
        , t = t.borderColor
        , r = labelsUtil.toString(n) + labelsUtil.toString(a) + (i ? labelsUtil.toString(i) : "" + (t ? labelsUtil.toString(t) : "")) + e + r;
      return this.AS(r),
      this.oT[r]
  }
  ,
  oga.prototype.AS = function(t) {
      this.oT[t] || (this.oT[t] = this.index++)
  }
  ,
  oga);
  function oga() {
      this.oT = {},
      this.index = 1
  }
  var labelGroup = new LabelGroup
    , isSupportFloat64Array = "undefined" != typeof Float64Array
    , isSupportFloat32Array$1 = "undefined" != typeof Float32Array;
  isSupportFloat64Array ? setMatrixArrayType(Float64Array) : isSupportFloat32Array$1 ? setMatrixArrayType(Float32Array) : (window.Float32Array = void 0,
  setMatrixArrayType(Array));
  var RESIZE_MULTIPLIER = 2
    , DEFAULT_CAPACITY = 128
    , StructArray = (Bga.Wb = function(t, e) {
      return t.trim(),
      e && (t.pM = !0,
      e.push(t.arrayBuffer)),
      {
          length: t.length,
          arrayBuffer: t.arrayBuffer
      }
  }
  ,
  Bga.Gb = function(t) {
      var e = Object.create(this.prototype);
      return e.arrayBuffer = t.arrayBuffer,
      e.length = t.length,
      e.yM = t.arrayBuffer.byteLength / this.Rb,
      e.mM(),
      e
  }
  ,
  Bga.prototype.trim = function() {
      this.length !== this.yM && (this.yM = this.length,
      this.arrayBuffer = this.arrayBuffer.slice(0, this.length * this.constructor.Rb),
      this.mM())
  }
  ,
  Bga.prototype.resize = function(t) {
      this.gM(t),
      this.length = t
  }
  ,
  Bga.prototype.gM = function(t) {
      t > this.yM && (this.yM = Math.max(t, Math.floor(this.yM * RESIZE_MULTIPLIER), DEFAULT_CAPACITY),
      t = this.wM,
      this.arrayBuffer = new ArrayBuffer(this.yM * this.constructor.Rb),
      this.mM(),
      t && this.wM.set(t))
  }
  ,
  Bga);
  function Bga() {
      this.pM = !1,
      this.yM = -1,
      this.length = 0
  }
  var FillArray = (Jga = StructArray,
  __extends(Kga, Jga),
  Kga.prototype.kb = function(t, e) {
      var r = this.length;
      this.resize(this.length + 1),
      this.MM(r, t, e)
  }
  ,
  Kga.prototype.MM = function(t, e, r) {
      this.Mb[t *= 2] = e,
      this.Mb[1 + t] = r
  }
  ,
  Kga.prototype.mM = function() {
      this.wM = new Uint8Array(this.arrayBuffer),
      this.Mb = new Float32Array(this.arrayBuffer)
  }
  ,
  Kga.Rb = 8,
  Kga), Jga;
  function Kga() {
      var t = Jga.call(this) || this;
      return t.pM = !1,
      t.resize(0),
      t
  }
  var FillExtrusionArray = (Tga = StructArray,
  __extends(Uga, Tga),
  Uga.prototype.kb = function(t, e, r, n, i, a) {
      var o = this.length;
      this.resize(o + 1),
      this.MM(o, t, e, r, n, i, a)
  }
  ,
  Uga.prototype.MM = function(t, e, r, n, i, a, o) {
      var s = 8 * t;
      this.Mb[s] = e,
      this.Mb[1 + s] = r,
      this.Mb[2 + s] = n,
      this.Mb[3 + s] = i,
      this.Mb[4 + s] = a[0],
      this.Mb[5 + s] = a[1],
      this.Mb[6 + s] = a[2],
      this.jM[14 + (t *= 16)] = o[0],
      this.jM[15 + t] = o[1]
  }
  ,
  Uga.prototype.mM = function() {
      this.wM = new Uint8Array(this.arrayBuffer),
      this.Mb = new Float32Array(this.arrayBuffer),
      this.jM = new Uint16Array(this.arrayBuffer)
  }
  ,
  Uga.Rb = 32,
  Uga), Tga;
  function Uga() {
      var t = Tga.call(this) || this;
      return t.pM = !1,
      t.resize(0),
      t
  }
  var LinesIndexArray = (k6a = StructArray,
  __extends(l6a, k6a),
  l6a.prototype.kb = function(t, e) {
      var r = this.length;
      this.resize(this.length + 1),
      this.MM(r, t, e)
  }
  ,
  l6a.prototype.MM = function(t, e, r) {
      this.jM[t *= 2] = e,
      this.jM[1 + t] = r
  }
  ,
  l6a.prototype.mM = function() {
      this.wM = new Uint8Array(this.arrayBuffer),
      this.jM = new Uint16Array(this.arrayBuffer)
  }
  ,
  l6a.Rb = 4,
  l6a), k6a;
  function l6a() {
      var t = k6a.call(this) || this;
      return t.length = 0,
      t.resize(0),
      t
  }
  var LinesIndexArrayUint = (u6a = StructArray,
  __extends(v6a, u6a),
  v6a.prototype.kb = function(t, e) {
      var r = this.length;
      this.resize(this.length + 1),
      this.MM(r, t, e)
  }
  ,
  v6a.prototype.MM = function(t, e, r) {
      this.UI[t *= 2] = e,
      this.UI[1 + t] = r
  }
  ,
  v6a.prototype.mM = function() {
      this.wM = new Uint8Array(this.arrayBuffer),
      this.UI = new Uint32Array(this.arrayBuffer)
  }
  ,
  v6a.Rb = 8,
  v6a), u6a;
  function v6a() {
      var t = u6a.call(this) || this;
      return t.length = 0,
      t.resize(0),
      t
  }
  var LineArrayBuffer = (E6a = StructArray,
  __extends(F6a, E6a),
  F6a.prototype.kb = function(t, e, r, n) {
      var i = this.length;
      this.resize(i + 1),
      this.MM(i, t, e, r, n)
  }
  ,
  F6a.prototype.MM = function(t, e, r, n, i) {
      t *= this.constructor.Rb / 4,
      this.Mb[t] = e[0],
      this.Mb[1 + t] = e[1],
      this.Mb[2 + t] = r[0],
      this.Mb[3 + t] = r[1],
      this.Mb[4 + t] = n,
      this.Mb[5 + t] = i[0],
      this.Mb[6 + t] = i[1]
  }
  ,
  F6a.prototype.mM = function() {
      this.wM = new Uint8Array(this.arrayBuffer),
      this.Mb = new Float32Array(this.arrayBuffer)
  }
  ,
  F6a.Rb = 28,
  F6a), E6a;
  function F6a() {
      var t = E6a.call(this) || this;
      return t.resize(0),
      t
  }
  var TriangleIndexArray = (U6a = StructArray,
  __extends(V6a, U6a),
  V6a.prototype.kb = function(t, e, r) {
      var n = this.length;
      this.resize(n + 1),
      this.MM(n, t, e, r)
  }
  ,
  V6a.prototype.MM = function(t, e, r, n) {
      this.jM[t *= 3] = e,
      this.jM[1 + t] = r,
      this.jM[2 + t] = n
  }
  ,
  V6a.prototype.mM = function() {
      this.wM = new Uint8Array(this.arrayBuffer),
      this.jM = new Uint16Array(this.arrayBuffer)
  }
  ,
  V6a.Rb = 6,
  V6a), U6a;
  function V6a() {
      var t = U6a.call(this) || this;
      return t.resize(0),
      t
  }
  var TriangleIndexArrayUint = (eha = StructArray,
  __extends(fha, eha),
  fha.prototype.kb = function(t, e, r) {
      var n = this.length;
      this.resize(n + 1),
      this.MM(n, t, e, r)
  }
  ,
  fha.prototype.MM = function(t, e, r, n) {
      this.UI[t *= 3] = e,
      this.UI[1 + t] = r,
      this.UI[2 + t] = n
  }
  ,
  fha.prototype.mM = function() {
      this.wM = new Uint8Array(this.arrayBuffer),
      this.UI = new Uint32Array(this.arrayBuffer)
  }
  ,
  fha.Rb = 12,
  fha), eha;
  function fha() {
      var t = eha.call(this) || this;
      return t.resize(0),
      t
  }
  var SymbolArray = (qha = StructArray,
  __extends(rha, qha),
  rha.prototype.kb = function(t, e, r) {
      var n = this.length;
      this.resize(this.length + 1),
      this.MM(n, t, e, r)
  }
  ,
  rha.prototype.MM = function(t, e, r, n) {
      var i = 13 * t;
      this.Mb[i] = e,
      this.Mb[1 + i] = r;
      var a = n.color
        , t = n.borderColor
        , e = n.radius
        , r = n.borderWidth;
      this.Mb[2 + i] = e,
      this.Mb[3 + i] = r,
      this.Mb[4 + i] = a[0],
      this.Mb[5 + i] = a[1],
      this.Mb[6 + i] = a[2],
      this.Mb[7 + i] = a[3],
      this.Mb[8 + i] = t[0],
      this.Mb[9 + i] = t[1],
      this.Mb[10 + i] = t[2],
      this.Mb[11 + i] = t[3],
      this.Mb[12 + i] = +(n.visible && n.filter)
  }
  ,
  rha.prototype.mM = function() {
      this.wM = new Uint8Array(this.arrayBuffer),
      this.Mb = new Float32Array(this.arrayBuffer)
  }
  ,
  rha.Rb = 52,
  rha), qha;
  function rha() {
      var t = qha.call(this) || this;
      return t.pM = !1,
      t.resize(0),
      t
  }
  var SimpleSymbolArray = (Gha = StructArray,
  __extends(Hha, Gha),
  Hha.prototype.kb = function(t, e) {
      var r = this.length;
      this.resize(this.length + 1),
      this.MM(r, t, e)
  }
  ,
  Hha.prototype.MM = function(t, e, r) {
      this.Mb[t *= 2] = e,
      this.Mb[1 + t] = r
  }
  ,
  Hha.prototype.mM = function() {
      this.wM = new Uint8Array(this.arrayBuffer),
      this.Mb = new Float32Array(this.arrayBuffer)
  }
  ,
  Hha.Rb = 4,
  Hha), Gha;
  function Hha() {
      var t = Gha.call(this) || this;
      return t.pM = !1,
      t.resize(0),
      t
  }
  var SmartArrayBuffer = (Qha.prototype.update = function(t) {
      var e, r, n;
      0 !== t.length && this.AM && (e = "ARRAY_BUFFER" === this.type,
      r = this.AM.gl,
      n = (e ? this.AM.de : this.AM.me).current,
      (e ? this.AM.de : this.AM.me).set(this.buffer),
      this.uf < t.byteLength ? (r.bufferData(r[this.type], t, r.STATIC_DRAW),
      this.byteLength = t.byteLength,
      this.uf = t.byteLength) : (r.bufferSubData(r[this.type], 0, t),
      this.byteLength = t.byteLength),
      (e ? this.AM.de : this.AM.me).set(n))
  }
  ,
  Qha.prototype.destroy = function() {
      this.buffer && this.AM && this.AM.deleteBuffer(this.buffer)
  }
  ,
  Qha.prototype.TX = function() {
      this.AM = null
  }
  ,
  __decorate([InnerClass("SmartArrayBuffer")], Qha));
  function Qha(t, e, r, n) {
      void 0 === n && (n = "ARRAY_BUFFER"),
      this.AM = t,
      this.kM = r,
      this.type = n,
      t && (this.buffer = "ARRAY_BUFFER" === n ? t.fe(e, r, "DYNAMIC_DRAW") : t.ve(e),
      this.uf = e.byteLength,
      this.byteLength = e.byteLength)
  }
  var COS_HALF_SHARP_CORNER = Math.cos(Math.PI / 180 * 75)
    , prepMatClockwise = fromValues(0, -1, 1, 0)
    , perpMatCounterClockwise = fromValues(0, 1, -1, 0);
  function perpCounterClockwise(t, e) {
      transformMat2(t, e, perpMatCounterClockwise)
  }
  function perpClockwise(t, e) {
      transformMat2(t, e, prepMatClockwise)
  }
  var minRoundAngle = Math.PI / 9, emptyVec2 = create$3(), emptyVec3 = create$1(), prevPos = create$3(), currentPos = create$3(), nextPos = create$3(), tmpPos = create$3(), currentNormal = create$3(), nextNormal = create$3(), distance$1 = 0, nextDir = create$3(), currentDir = create$3(), negateCurrentNormal = create$3(), lineJoin, lineCap, currentNormal_addLineVertex = create$3(), leftNormal = create$3(), rightNormal = create$3(), offsetLeft = create$3(), offsetRight = create$3(), joinNormal_addMiter = create$3(), tmp_addTiangleVertex = create$1(), currentNormal_addTiangleVertex = create$3(), nextNormal_addTiangleVertex = create$3(), normal_addTiangleVertex = create$3(), tmp_addRoundVertex = create$1(), currentNormal_addRoundVertex = create$3(), nextNormal_addRoundVertex = create$3(), tmpNormal_addRoundVertex = create$3(), roundCenter_addRoundVertex = create$3(), CoreLineBucket = (b7a.OM = function(t, e, r) {
      sub$1(t, e, r),
      normalize(t, t),
      perpCounterClockwise(t, t)
  }
  ,
  b7a.xM = function(t, e, r) {
      add(t, e, r),
      0 === t[0] && 0 === t[1] || normalize(t, t)
  }
  ,
  b7a.prototype.hb = function(t, e) {
      if (t.length < 4)
          return {
              Iw: 0,
              distance: 0
          };
      "auto" === (e = void (distance$1 = 0) === e ? {
          X_: 1,
          lineJoin: "miter",
          lineCap: "butt"
      } : e).lineJoin && (e.lineJoin = "miter"),
      lineJoin = e.lineJoin,
      lineCap = e.lineCap || "butt";
      for (var r, n = this.Qx.length, i = 0, a = t.length; i < a; i += 2)
          0 === i ? (currentPos[0] = t[i],
          currentPos[1] = t[i + 1],
          nextPos[0] = t[i + 2],
          nextPos[1] = t[i + 3],
          b7a.OM(nextNormal, nextPos, currentPos),
          copy$1(currentNormal, nextNormal),
          sub$1(nextDir, nextPos, currentPos),
          normalize(nextDir, nextDir),
          "square" === lineCap ? this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, e.X_, "bevel") : ("round" === lineCap && (copy$1(negateCurrentNormal, currentNormal),
          negate(negateCurrentNormal, currentNormal),
          this.DI(currentPos, negateCurrentNormal, currentNormal, distance$1)),
          this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, "bevel")),
          copy$1(currentDir, nextDir),
          copy$1(prevPos, currentPos)) : i === a - 2 ? (currentPos[0] = t[i],
          currentPos[1] = t[i + 1],
          r = dist$1(currentPos, prevPos),
          distance$1 += r,
          "square" === lineCap ? this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !1, -1 * e.X_, "miter") : "round" === lineCap ? (this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !1, 0, "miter"),
          copy$1(negateCurrentNormal, nextNormal),
          negate(negateCurrentNormal, nextNormal),
          this.DI(currentPos, nextNormal, negateCurrentNormal, distance$1)) : this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, "miter")) : (currentPos[0] = t[i],
          currentPos[1] = t[i + 1],
          nextPos[0] = t[i + 2],
          nextPos[1] = t[i + 3],
          b7a.OM(nextNormal, nextPos, currentPos),
          0 === nextNormal[0] && 0 === nextNormal[1] || (r = dist$1(currentPos, prevPos),
          distance$1 += r,
          sub$1(nextDir, nextPos, currentPos),
          normalize(nextDir, nextDir),
          this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, e.lineJoin),
          this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, e.lineJoin),
          copy$1(prevPos, currentPos),
          copy$1(currentNormal, nextNormal),
          copy$1(currentDir, nextDir)));
      return {
          Iw: 3 * (this.Qx.length - n),
          distance: distance$1
      }
  }
  ,
  b7a.prototype.g0 = function(t, e) {
      if (t.length < 2)
          return {
              Iw: 0,
              distance: 0
          };
      "auto" === (e = void (distance$1 = 0) === e ? {
          X_: 1,
          lineJoin: "miter",
          lineCap: "butt"
      } : e).lineJoin && (e.lineJoin = "miter"),
      lineJoin = e.lineJoin,
      lineCap = e.lineCap || "butt";
      for (var r, n = this.Qx.length, i = 0, a = t.length; i < a; i++)
          0 === i ? (currentPos[0] = t[i][0],
          currentPos[1] = t[i][1],
          nextPos[0] = t[i + 1][0],
          nextPos[1] = t[i + 1][1],
          b7a.OM(nextNormal, nextPos, currentPos),
          copy$1(currentNormal, nextNormal),
          sub$1(nextDir, nextPos, currentPos),
          normalize(nextDir, nextDir),
          "square" === lineCap ? this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, e.X_, "bevel") : ("round" === lineCap && (copy$1(negateCurrentNormal, currentNormal),
          negate(negateCurrentNormal, currentNormal),
          this.DI(currentPos, negateCurrentNormal, currentNormal, distance$1)),
          this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, "bevel")),
          copy$1(currentDir, nextDir),
          copy$1(prevPos, currentPos)) : i === a - 1 ? (currentPos[0] = t[i][0],
          currentPos[1] = t[i][1],
          r = dist$1(currentPos, prevPos),
          distance$1 += r,
          "square" === lineCap ? this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !1, -1 * e.X_, "miter") : "round" === lineCap ? (this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !1, 0, "miter"),
          copy$1(negateCurrentNormal, nextNormal),
          negate(negateCurrentNormal, nextNormal),
          this.DI(currentPos, nextNormal, negateCurrentNormal, distance$1)) : this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, "miter")) : (currentPos[0] = t[i][0],
          currentPos[1] = t[i][1],
          nextPos[0] = t[i + 1][0],
          nextPos[1] = t[i + 1][1],
          b7a.OM(nextNormal, nextPos, currentPos),
          0 === nextNormal[0] && 0 === nextNormal[1] || (r = dist$1(currentPos, prevPos),
          distance$1 += r,
          sub$1(nextDir, nextPos, currentPos),
          normalize(nextDir, nextDir),
          this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, e.lineJoin),
          this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, e.lineJoin),
          copy$1(prevPos, currentPos),
          copy$1(currentNormal, nextNormal),
          copy$1(currentDir, nextDir)));
      return {
          Iw: 3 * (this.Qx.length - n),
          distance: distance$1
      }
  }
  ,
  b7a.prototype.eD = function(t, e, r) {
      if (void 0 === r && (r = 3e3),
      t.length < 4)
          return {
              Iw: 0,
              distance: 0
          };
      "auto" === (e = void (distance$1 = 0) === e ? {
          X_: 1,
          lineJoin: "miter",
          lineCap: "butt"
      } : e).lineJoin && (e.lineJoin = "miter"),
      lineJoin = e.lineJoin,
      lineCap = e.lineCap || "butt";
      for (var n = this.Qx.length, i = 0, a = t.length; i < a; i += 2)
          if (0 === i)
              currentPos[0] = t[i],
              currentPos[1] = t[i + 1],
              nextPos[0] = t[i + 2],
              nextPos[1] = t[i + 3],
              b7a.OM(nextNormal, nextPos, currentPos),
              copy$1(currentNormal, nextNormal),
              sub$1(nextDir, nextPos, currentPos),
              normalize(nextDir, nextDir),
              "square" === lineCap ? this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, e.X_, "bevel") : ("round" === lineCap && (copy$1(negateCurrentNormal, currentNormal),
              negate(negateCurrentNormal, currentNormal),
              this.DI(currentPos, negateCurrentNormal, currentNormal, distance$1)),
              this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, "bevel")),
              copy$1(currentDir, nextDir),
              copy$1(prevPos, currentPos);
          else if (i === a - 2) {
              tmpPos[0] = t[i],
              tmpPos[1] = t[i + 1];
              var o = dist$1(tmpPos, prevPos);
              copy$1(tmpPos, prevPos);
              for (var s = 0; r < o - s; )
                  tmpPos[0] = tmpPos[0] + currentDir[0] * r,
                  tmpPos[1] = tmpPos[1] + currentDir[1] * r,
                  s += r,
                  this.IM(tmpPos, currentNormal, nextNormal, distance$1 + s, currentDir, !1, 0, "miter"),
                  this.IM(tmpPos, currentNormal, nextNormal, distance$1 + s, currentDir, !0, 0, "miter");
              currentPos[0] = t[i],
              currentPos[1] = t[i + 1],
              distance$1 += o,
              "square" === lineCap ? this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !1, -1 * e.X_, "miter") : "round" === lineCap ? (this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !1, 0, "miter"),
              copy$1(negateCurrentNormal, nextNormal),
              negate(negateCurrentNormal, nextNormal),
              this.DI(currentPos, nextNormal, negateCurrentNormal, distance$1)) : this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, "miter")
          } else if (currentPos[0] = t[i],
          currentPos[1] = t[i + 1],
          nextPos[0] = t[i + 2],
          nextPos[1] = t[i + 3],
          b7a.OM(nextNormal, nextPos, currentPos),
          0 !== nextNormal[0] || 0 !== nextNormal[1]) {
              var u = dist$1(currentPos, prevPos);
              for (copy$1(tmpPos, prevPos),
              s = 0; r < u - s; )
                  tmpPos[0] = tmpPos[0] + currentDir[0] * r,
                  tmpPos[1] = tmpPos[1] + currentDir[1] * r,
                  s += r,
                  this.IM(tmpPos, currentNormal, currentNormal, distance$1 + s, currentDir, !1, 0, "miter"),
                  this.IM(tmpPos, currentNormal, currentNormal, distance$1 + s, currentDir, !0, 0, "miter");
              currentPos[0] = t[i],
              currentPos[1] = t[i + 1],
              distance$1 += u,
              sub$1(nextDir, nextPos, currentPos),
              normalize(nextDir, nextDir),
              this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, e.lineJoin),
              this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, e.lineJoin),
              copy$1(prevPos, currentPos),
              copy$1(currentNormal, nextNormal),
              copy$1(currentDir, nextDir)
          }
      return {
          Iw: 3 * (this.Qx.length - n),
          distance: distance$1
      }
  }
  ,
  b7a.prototype.Nx = function(t, e) {
      if (void 0 === e && (e = {
          lineJoin: "miter"
      }),
      t.length < 2)
          return {
              Iw: 0,
              distance: 0
          };
      for (var r, n, i = this.Qx.length, a = 0, o = t.length; a < o; a++)
          0 === a ? (copy$1(currentPos, t[a]),
          r = t[a + 1],
          n = t[o - 2],
          b7a.OM(nextNormal, r, currentPos),
          b7a.OM(currentNormal, currentPos, n),
          sub$1(nextDir, r, currentPos),
          normalize(nextDir, nextDir),
          this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, e.lineJoin),
          copy$1(currentDir, nextDir),
          copy$1(currentNormal, nextNormal),
          copy$1(prevPos, currentPos)) : a === o - 1 ? (copy$1(currentPos, t[a]),
          copy$1(nextPos, t[1]),
          distance$1 += dist$1(currentPos, prevPos),
          b7a.OM(nextNormal, nextPos, currentPos),
          this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, e.lineJoin)) : (copy$1(currentPos, t[a]),
          copy$1(nextPos, t[a + 1]),
          distance$1 += dist$1(currentPos, prevPos),
          b7a.OM(nextNormal, nextPos, currentPos),
          sub$1(nextDir, nextPos, currentPos),
          normalize(nextDir, nextDir),
          this.IM(currentPos, currentNormal, nextNormal, distance$1, currentDir, !1, 0, e.lineJoin),
          this.IM(currentPos, currentNormal, nextNormal, distance$1, nextDir, !0, 0, e.lineJoin),
          copy$1(prevPos, currentPos),
          copy$1(currentNormal, nextNormal),
          copy$1(currentDir, nextDir));
      return {
          Iw: 3 * (this.Qx.length - i),
          distance: distance$1
      }
  }
  ,
  b7a.prototype.destroy = function() {
      this.uploaded = !1,
      this.zs && (this.zs.destroy(),
      delete this.zs),
      this.Pc && (this.Pc.destroy(),
      delete this.Pc)
  }
  ,
  b7a.prototype.IM = function(t, e, r, n, i, a, o, s) {
      copy$1(joinNormal_addMiter, emptyVec2),
      b7a.xM(joinNormal_addMiter, e, r);
      var u = dot(joinNormal_addMiter, e);
      scale$2(joinNormal_addMiter, joinNormal_addMiter, 1 / u);
      var c = 0
        , f = 0;
      o && (f = c = o),
      "bevel" === s || "miter" === s && u < COS_HALF_SHARP_CORNER ? a ? this.SM(t, r, n, c, f, i) : (this.SM(t, e, n, c, f, i),
      this.e3 = this._b.length - 2,
      this.e2 = this.e3 - 1,
      this.e1 = this.e2 - 1,
      this.Qx.kb(this.e1, this.e2, this.e3),
      this.e1 = this.e2,
      this.e2 = this.e3,
      this.e3 = this.e3 + 1,
      this.Qx.kb(this.e1, this.e2, this.e3),
      this.CM(t, e, r, n)) : "round" === s ? a ? this.SM(t, r, n, c, f, i) : (this.SM(t, e, n, c, f, i),
      this.e3 = this._b.length - 2,
      this.e2 = this.e3 - 1,
      this.e1 = this.e2 - 1,
      this.Qx.kb(this.e1, this.e2, this.e3),
      this.e1 = this.e2,
      this.e2 = this.e3,
      this.e3 = this.e3 + 1,
      this.Qx.kb(this.e1, this.e2, this.e3),
      this.DI(t, e, r, n)) : (this.SM(t, joinNormal_addMiter, n, c, f, i),
      a || (this.e3 = this._b.length - 2,
      this.e2 = this.e3 - 1,
      this.e1 = this.e2 - 1,
      this.Qx.kb(this.e1, this.e2, this.e3),
      this.e1 = this.e2,
      this.e2 = this.e3,
      this.e3 = this.e3 + 1,
      this.Qx.kb(this.e1, this.e2, this.e3)))
  }
  ,
  b7a.prototype.SM = function(t, e, r, n, i, a) {
      copy$1(currentNormal_addLineVertex, e),
      copy$1(leftNormal, currentNormal_addLineVertex),
      copy$1(rightNormal, currentNormal_addLineVertex),
      copy$1(offsetLeft, emptyVec2),
      copy$1(offsetRight, emptyVec2),
      scale$2(rightNormal, currentNormal_addLineVertex, -1),
      n && (perpCounterClockwise(offsetLeft, leftNormal),
      scale$2(offsetLeft, offsetLeft, n),
      add(leftNormal, offsetLeft, leftNormal)),
      i && (perpClockwise(offsetRight, rightNormal),
      scale$2(offsetRight, offsetRight, i),
      add(rightNormal, offsetRight, rightNormal)),
      this._b.kb(t, leftNormal, r, a),
      this._b.kb(t, rightNormal, r, a)
  }
  ,
  b7a.prototype.CM = function(t, e, r, n) {
      void 0 === n && (n = 0),
      copy(tmp_addTiangleVertex, emptyVec3),
      copy$1(currentNormal_addTiangleVertex, e),
      copy$1(nextNormal_addTiangleVertex, r),
      copy$1(normal_addTiangleVertex, emptyVec2),
      cross$1(tmp_addTiangleVertex, currentNormal_addTiangleVertex, nextNormal_addTiangleVertex),
      r = 0 < tmp_addTiangleVertex[2],
      this._b.kb(t, normal_addTiangleVertex, n, normal_addTiangleVertex),
      r && (negate(currentNormal_addTiangleVertex, currentNormal_addTiangleVertex),
      negate(nextNormal_addTiangleVertex, nextNormal_addTiangleVertex)),
      this._b.kb(t, currentNormal_addTiangleVertex, n, normal_addTiangleVertex),
      this._b.kb(t, nextNormal_addTiangleVertex, n, normal_addTiangleVertex),
      this.e3 = this._b.length - 1,
      this.e2 = this.e3 - 1,
      this.e1 = this.e2 - 1,
      this.Qx.kb(this.e1, this.e2, this.e3)
  }
  ,
  b7a.prototype.DI = function(t, e, r, n) {
      void 0 === n && (n = 0),
      copy(tmp_addRoundVertex, emptyVec3),
      copy$1(currentNormal_addRoundVertex, e),
      copy$1(nextNormal_addRoundVertex, r);
      var i = angle(currentNormal_addRoundVertex, nextNormal_addRoundVertex);
      cross$1(tmp_addRoundVertex, currentNormal_addRoundVertex, nextNormal_addRoundVertex);
      var a = 0 < tmp_addRoundVertex[2]
        , o = [];
      o.push(currentNormal_addRoundVertex);
      for (var s = minRoundAngle; s < i; s += minRoundAngle) {
          var u = create$3();
          rotate(u, currentNormal_addRoundVertex, fromValues$3(0, 0), a ? s : -1 * s),
          o.push(u)
      }
      o.push(nextNormal_addRoundVertex),
      a && forEach(o, function(t) {
          negate(t, t)
      }),
      copy$1(roundCenter_addRoundVertex, emptyVec2),
      this._b.kb(t, roundCenter_addRoundVertex, n, roundCenter_addRoundVertex);
      var c = this._b.length - 1;
      this._b.kb(t, o[0], n, roundCenter_addRoundVertex),
      this.e3 = this._b.length - 1,
      this.e2 = this.e3 - 1;
      for (var f = 1, l = o.length; f < l; f++)
          this._b.kb(t, o[f], n, roundCenter_addRoundVertex),
          this.e3 = this._b.length - 1,
          this.e2 = this.e3 - 1,
          this.Qx.kb(c, this.e2, this.e3)
  }
  ,
  b7a);
  function b7a() {
      this._b = new LineArrayBuffer,
      this.e1 = this.e2 = this.e3 = -1,
      this.uploaded = !1
  }
  var PolylineBucket = (uia = CoreLineBucket,
  __extends(via, uia),
  via.prototype.upload = function(t, e) {
      void 0 === e && (e = !1),
      this.uploaded || (this.uploaded = !0,
      this.zs ? this.zs.update(this._b.Mb) : this.zs = new SmartArrayBuffer(t,this._b.Mb,LineArrayBuffer.Rb),
      this.Pc ? this.Pc.update(this.Qx.UI) : this.Pc = new SmartArrayBuffer(t,this.Qx.UI,32,"ELEMENT_ARRAY_BUFFER"),
      e && (delete this.Qx,
      delete this._b))
  }
  ,
  via.prototype.reset = function() {
      this.uploaded = !1,
      this._b = new LineArrayBuffer,
      this.Qx = new TriangleIndexArrayUint,
      this.e1 = this.e2 = this.e3 = -1,
      this.uploaded = !1
  }
  ,
  via), uia;
  function via() {
      var t = uia.call(this) || this;
      return t.Qx = new TriangleIndexArrayUint,
      t
  }
  var earcut_1 = earcut
    , default_1$1 = earcut;
  function earcut(t, e, r) {
      r = r || 2;
      var n, i, a, o, s, u = e && e.length, c = u ? e[0] * r : t.length, f = linkedList(t, 0, c, r, !0), l = [];
      if (!f || f.next === f.NM)
          return l;
      if (u && (f = eliminateHoles(t, e, f, r)),
      t.length > 80 * r) {
          for (var h = n = t[0], d = i = t[1], v = r; v < c; v += r)
              (a = t[v]) < h && (h = a),
              (o = t[v + 1]) < d && (d = o),
              n < a && (n = a),
              i < o && (i = o);
          s = 0 !== (s = Math.max(n - h, i - d)) ? 1 / s : 0
      }
      return earcutLinked(f, l, r, h, d, s),
      l
  }
  function linkedList(t, e, r, n, i) {
      var a, o;
      if (i === 0 < signedArea(t, e, r, n))
          for (a = e; a < r; a += n)
              o = insertNode(a, t[a], t[a + 1], o);
      else
          for (a = r - n; e <= a; a -= n)
              o = insertNode(a, t[a], t[a + 1], o);
      return o && equals$2(o, o.next) && (removeNode(o),
      o = o.next),
      o
  }
  function filterPoints(t, e) {
      if (!t)
          return t;
      e = e || t;
      var r, n = t;
      do {
          if (r = !1,
          n.LM || !equals$2(n, n.next) && 0 !== area(n.NM, n, n.next))
              n = n.next;
          else {
              if (removeNode(n),
              (n = e = n.NM) === n.next)
                  break;
              r = !0
          }
      } while (r || n !== e);
      return e
  }
  function earcutLinked(t, e, r, n, i, a, o) {
      if (t) {
          !o && a && indexCurve(t, n, i, a);
          for (var s, u, c = t; t.NM !== t.next; )
              if (s = t.NM,
              u = t.next,
              a ? isEarHashed(t, n, i, a) : isEar(t))
                  e.push(s.i / r),
                  e.push(t.i / r),
                  e.push(u.i / r),
                  removeNode(t),
                  t = u.next,
                  c = u.next;
              else if ((t = u) === c) {
                  o ? 1 === o ? earcutLinked(t = cureLocalIntersections(filterPoints(t), e, r), e, r, n, i, a, 2) : 2 === o && splitEarcut(t, e, r, n, i, a) : earcutLinked(filterPoints(t), e, r, n, i, a, 1);
                  break
              }
      }
  }
  function isEar(t) {
      var e = t.NM
        , r = t
        , n = t.next;
      if (!(0 <= area(e, r, n))) {
          for (var i = t.next.next; i !== t.NM; ) {
              if (pointInTriangle(e.x, e.y, r.x, r.y, n.x, n.y, i.x, i.y) && 0 <= area(i.NM, i, i.next))
                  return;
              i = i.next
          }
          return 1
      }
  }
  function isEarHashed(t, e, r, n) {
      var i = t.NM
        , a = t
        , o = t.next;
      if (!(0 <= area(i, a, o))) {
          for (var s = (i.x < a.x ? i.x < o.x ? i : o : a.x < o.x ? a : o).x, u = (i.y < a.y ? i.y < o.y ? i : o : a.y < o.y ? a : o).y, c = (i.x > a.x ? i.x > o.x ? i : o : a.x > o.x ? a : o).x, f = (i.y > a.y ? i.y > o.y ? i : o : a.y > o.y ? a : o).y, l = zOrder(s, u, e, r, n), h = zOrder(c, f, e, r, n), d = t.DM, v = t.RM; d && d.z >= l && v && v.z <= h; ) {
              if (d !== t.NM && d !== t.next && pointInTriangle(i.x, i.y, a.x, a.y, o.x, o.y, d.x, d.y) && 0 <= area(d.NM, d, d.next))
                  return;
              if (d = d.DM,
              v !== t.NM && v !== t.next && pointInTriangle(i.x, i.y, a.x, a.y, o.x, o.y, v.x, v.y) && 0 <= area(v.NM, v, v.next))
                  return;
              v = v.RM
          }
          for (; d && d.z >= l; ) {
              if (d !== t.NM && d !== t.next && pointInTriangle(i.x, i.y, a.x, a.y, o.x, o.y, d.x, d.y) && 0 <= area(d.NM, d, d.next))
                  return;
              d = d.DM
          }
          for (; v && v.z <= h; ) {
              if (v !== t.NM && v !== t.next && pointInTriangle(i.x, i.y, a.x, a.y, o.x, o.y, v.x, v.y) && 0 <= area(v.NM, v, v.next))
                  return;
              v = v.RM
          }
          return 1
      }
  }
  function cureLocalIntersections(t, e, r) {
      var n = t;
      do {
          var i = n.NM
            , a = n.next.next
      } while (!equals$2(i, a) && intersects$1(i, n, n.next, a) && locallyInside(i, a) && locallyInside(a, i) && (e.push(i.i / r),
      e.push(n.i / r),
      e.push(a.i / r),
      removeNode(n),
      removeNode(n.next),
      n = t = a),
      (n = n.next) !== t);
      return filterPoints(n)
  }
  function splitEarcut(t, e, r, n, i, a) {
      var o = t;
      do {
          for (var s = o.next.next; s !== o.NM; ) {
              if (o.i !== s.i && isValidDiagonal(o, s)) {
                  var u = splitPolygon(o, s)
                    , o = filterPoints(o, o.next)
                    , u = filterPoints(u, u.next);
                  return earcutLinked(o, e, r, n, i, a),
                  earcutLinked(u, e, r, n, i, a),
                  0
              }
              s = s.next
          }
      } while ((o = o.next) !== t)
  }
  function eliminateHoles(t, e, r, n) {
      for (var i, a = [], o = 0, s = e.length; o < s; o++)
          (i = linkedList(t, e[o] * n, o < s - 1 ? e[o + 1] * n : t.length, n, !1)) === i.next && (i.LM = !0),
          a.push(getLeftmost(i));
      for (a.sort(compareX),
      o = 0; o < a.length; o++)
          r = filterPoints(r = eliminateHole(a[o], r), r.next);
      return r
  }
  function compareX(t, e) {
      return t.x - e.x
  }
  function eliminateHole(t, e) {
      var r = findHoleBridge(t, e);
      if (!r)
          return e;
      var n = splitPolygon(r, t)
        , t = filterPoints(r, r.next);
      return filterPoints(n, n.next),
      e === r ? t : e
  }
  function findHoleBridge(t, e) {
      var r, n = e, i = t.x, a = t.y, o = -1 / 0;
      do {
          if (a <= n.y && a >= n.next.y && n.next.y !== n.y) {
              var s = n.x + (a - n.y) * (n.next.x - n.x) / (n.next.y - n.y);
              if (s <= i && o < s) {
                  if ((o = s) === i) {
                      if (a === n.y)
                          return n;
                      if (a === n.next.y)
                          return n.next
                  }
                  r = n.x < n.next.x ? n : n.next
              }
          }
      } while ((n = n.next) !== e);
      if (!r)
          return null;
      if (i === o)
          return r;
      for (var u, c = r, f = r.x, l = r.y, h = 1 / 0, n = r; i >= n.x && n.x >= f && i !== n.x && pointInTriangle(a < l ? i : o, a, f, l, a < l ? o : i, a, n.x, n.y) && (u = Math.abs(a - n.y) / (i - n.x),
      locallyInside(n, t) && (u < h || u === h && (n.x > r.x || n.x === r.x && sectorContainsSector(r, n))) && (r = n,
      h = u)),
      (n = n.next) !== c; )
          ;
      return r
  }
  function sectorContainsSector(t, e) {
      return area(t.NM, t, e.NM) < 0 && area(e.next, t, t.next) < 0
  }
  function indexCurve(t, e, r, n) {
      for (var i = t; null === i.z && (i.z = zOrder(i.x, i.y, e, r, n)),
      i.DM = i.NM,
      i.RM = i.next,
      (i = i.next) !== t; )
          ;
      i.DM.RM = null,
      i.DM = null,
      sortLinked(i)
  }
  function sortLinked(t) {
      var e, r, n, i, a, o, s, u, c = 1;
      do {
          for (r = t,
          a = t = null,
          o = 0; r; ) {
              for (o++,
              n = r,
              e = s = 0; e < c && (s++,
              n = n.RM); e++)
                  ;
              for (u = c; 0 < s || 0 < u && n; )
                  0 !== s && (0 === u || !n || r.z <= n.z) ? (r = (i = r).RM,
                  s--) : (n = (i = n).RM,
                  u--),
                  a ? a.RM = i : t = i,
                  i.DM = a,
                  a = i;
              r = n
          }
      } while (a.RM = null,
      c *= 2,
      1 < o);
      return t
  }
  function zOrder(t, e, r, n, i) {
      return (t = 1431655765 & ((t = 858993459 & ((t = 252645135 & ((t = 16711935 & ((t = 32767 * (t - r) * i) | t << 8)) | t << 4)) | t << 2)) | t << 1)) | (1431655765 & ((e = 858993459 & ((e = 252645135 & ((e = 16711935 & ((e = 32767 * (e - n) * i) | e << 8)) | e << 4)) | e << 2)) | e << 1)) << 1
  }
  function getLeftmost(t) {
      for (var e = t, r = t; (e.x < r.x || e.x === r.x && e.y < r.y) && (r = e),
      (e = e.next) !== t; )
          ;
      return r
  }
  function pointInTriangle(t, e, r, n, i, a, o, s) {
      return 0 <= (i - o) * (e - s) - (t - o) * (a - s) && 0 <= (t - o) * (n - s) - (r - o) * (e - s) && 0 <= (r - o) * (a - s) - (i - o) * (n - s)
  }
  function isValidDiagonal(t, e) {
      return t.next.i !== e.i && t.NM.i !== e.i && !intersectsPolygon(t, e) && (locallyInside(t, e) && locallyInside(e, t) && middleInside(t, e) && (area(t.NM, t, e.NM) || area(t, e.NM, e)) || equals$2(t, e) && 0 < area(t.NM, t, t.next) && 0 < area(e.NM, e, e.next))
  }
  function area(t, e, r) {
      return (e.y - t.y) * (r.x - e.x) - (e.x - t.x) * (r.y - e.y)
  }
  function equals$2(t, e) {
      return t.x === e.x && t.y === e.y
  }
  function intersects$1(t, e, r, n) {
      var i = sign(area(t, e, r))
        , a = sign(area(t, e, n))
        , o = sign(area(r, n, t))
        , s = sign(area(r, n, e));
      return i !== a && o !== s || 0 === i && onSegment(t, r, e) || 0 === a && onSegment(t, n, e) || 0 === o && onSegment(r, t, n) || 0 === s && onSegment(r, e, n)
  }
  function onSegment(t, e, r) {
      return e.x <= Math.max(t.x, r.x) && e.x >= Math.min(t.x, r.x) && e.y <= Math.max(t.y, r.y) && e.y >= Math.min(t.y, r.y)
  }
  function sign(t) {
      return 0 < t ? 1 : t < 0 ? -1 : 0
  }
  function intersectsPolygon(t, e) {
      var r = t;
      do {
          if (r.i !== t.i && r.next.i !== t.i && r.i !== e.i && r.next.i !== e.i && intersects$1(r, r.next, t, e))
              return 1
      } while ((r = r.next) !== t)
  }
  function locallyInside(t, e) {
      return area(t.NM, t, t.next) < 0 ? 0 <= area(t, e, t.next) && 0 <= area(t, t.NM, e) : area(t, e, t.NM) < 0 || area(t, t.next, e) < 0
  }
  function middleInside(t, e) {
      for (var r = t, n = !1, i = (t.x + e.x) / 2, a = (t.y + e.y) / 2; r.y > a != r.next.y > a && r.next.y !== r.y && i < (r.next.x - r.x) * (a - r.y) / (r.next.y - r.y) + r.x && (n = !n),
      (r = r.next) !== t; )
          ;
      return n
  }
  function splitPolygon(t, e) {
      var r = new Node(t.i,t.x,t.y)
        , n = new Node(e.i,e.x,e.y)
        , i = t.next
        , a = e.NM;
      return (t.next = e).NM = t,
      (r.next = i).NM = r,
      (n.next = r).NM = n,
      (a.next = n).NM = a,
      n
  }
  function insertNode(t, e, r, n) {
      return r = new Node(t,e,r),
      n ? (r.next = n.next,
      (r.NM = n).next.NM = r,
      n.next = r) : (r.NM = r).next = r,
      r
  }
  function removeNode(t) {
      t.next.NM = t.NM,
      t.NM.next = t.next,
      t.DM && (t.DM.RM = t.RM),
      t.RM && (t.RM.DM = t.DM)
  }
  function Node(t, e, r) {
      this.i = t,
      this.x = e,
      this.y = r,
      this.NM = null,
      this.next = null,
      this.z = null,
      this.DM = null,
      this.RM = null,
      this.LM = !1
  }
  function signedArea(t, e, r, n) {
      for (var i = 0, a = e, o = r - n; a < r; a += n)
          i += (t[o] - t[a]) * (t[a + 1] + t[o + 1]),
          o = a;
      return i
  }
  earcut.PM = function(t, e, r, n) {
      var i = e && e.length
        , a = i ? e[0] * r : t.length
        , o = Math.abs(signedArea(t, 0, a, r));
      if (i)
          for (var s = 0, u = e.length; s < u; s++) {
              var c = e[s] * r
                , f = s < u - 1 ? e[s + 1] * r : t.length;
              o -= Math.abs(signedArea(t, c, f, r))
          }
      for (var l = 0, s = 0; s < n.length; s += 3) {
          var h = n[s] * r
            , d = n[s + 1] * r
            , v = n[s + 2] * r;
          l += Math.abs((t[h] - t[v]) * (t[1 + d] - t[1 + h]) - (t[h] - t[d]) * (t[1 + v] - t[1 + h]))
      }
      return 0 === o && 0 === l ? 0 : Math.abs((l - o) / o)
  }
  ,
  earcut.UM = function(t) {
      for (var e = t[0][0].length, r = {
          rp: [],
          BM: [],
          dimensions: e
      }, n = 0, i = 0; i < t.length; i++) {
          for (var a = 0; a < t[i].length; a++)
              for (var o = 0; o < e; o++)
                  r.rp.push(t[i][a][o]);
          0 < i && (n += t[i - 1].length,
          r.BM.push(n))
      }
      return r
  }
  ,
  earcut_1.default = default_1$1;
  var CoreFillBucket = (rka.prototype.Nx = function(t, e) {
      if (t.length < 6)
          return 0;
      for (var r = this.Qx.length, n = this._b.length, i = earcut_1(t, e), a = 0, o = i.length; a < o; a += 3)
          this.Qx.kb(n + i[a], n + i[a + 1], n + i[a + 2]);
      for (a = 0,
      o = t.length; a < o; a += 2)
          this._b.kb(t[a], t[a + 1]);
      return 0 < (r = 3 * (this.Qx.length - r)) && (this.uploaded = !1),
      r
  }
  ,
  rka.prototype.Ew = function(t) {
      if (t.length < 2)
          return 0;
      for (var e = this.qM.length, r = this.zM.length, n = 0, i = t.length; n < i; n += 2)
          this.zM.kb(t[n][0], t[n][1]),
          this.zM.kb(t[n + 1][0], t[n + 1][1]),
          this.qM.kb(r + n, r + n + 1);
      return 0 < (e = 2 * (this.qM.length - e)) && (this.uploaded = !1),
      e
  }
  ,
  rka.prototype.destroy = function() {
      this.uploaded = !1,
      this.zs && (this.zs.context.deleteBuffer(this.zs),
      delete this.zs),
      this.Pc && (this.Pc.context.deleteBuffer(this.Pc),
      delete this.Pc),
      this.Ec && (this.Ec.context.deleteBuffer(this.Ec),
      delete this.Ec),
      this.Nc && (this.Nc.context.deleteBuffer(this.Nc),
      delete this.Nc)
  }
  ,
  rka);
  function rka() {
      this._b = new FillArray,
      this.zM = new FillArray,
      this.uploaded = !1
  }
  var PolygonBucket = (Gka = CoreFillBucket,
  __extends(Hka, Gka),
  Hka.prototype.upload = function(t, e) {
      void 0 === e && (e = !1),
      this.uploaded || (this.destroy(),
      this.uploaded = !0,
      this.zs = t.fe(this._b.Mb, FillArray.Rb),
      this.Pc = t.ve(this.Qx.UI),
      this.Ec = t.fe(this.zM.Mb, LinesIndexArray.Rb),
      this.Nc = t.ve(this.qM.UI),
      e && (delete this.Qx,
      delete this._b,
      delete this.zM,
      delete this.qM))
  }
  ,
  Hka.prototype.reset = function() {
      this._b = new FillArray,
      this.zM = new FillArray,
      this.Qx = new TriangleIndexArrayUint,
      this.qM = new LinesIndexArrayUint,
      this.uploaded = !1
  }
  ,
  Hka), Gka;
  function Hka() {
      var t = Gka.call(this) || this;
      return t.Qx = new TriangleIndexArrayUint,
      t.qM = new LinesIndexArrayUint,
      t
  }
  var FaceTextureCoord = {
      empty: fromValues$3(-1, -1),
      Gm: fromValues$3(1, 1),
      qm: fromValues$3(0, 1),
      Nm: fromValues$3(1, 0),
      Um: fromValues$3(0, 0)
  }
    , MaxInfo = {
      Gm: create$3(),
      qm: create$3(),
      Nm: create$3(),
      Um: create$3()
  }
    , floorHeight = 6
    , FillExtrusionBucket = (Lka.prototype.tz = function(t, e, r) {
      void 0 === e && (e = 100);
      for (var n = [], i = [], a = t.length, o = 0; o < a; o += 2)
          i[s = o / 2 * 3] = t[o],
          i[s + 1] = t[o + 1],
          i[s + 2] = 0;
      for (var s, o = 0; o < a; o += 2)
          n[s = o / 2 * 3] = t[o],
          n[s + 1] = t[o + 1],
          n[s + 2] = e;
      return this.Nx(n, e, r) + this.RI(i, n, r)
  }
  ,
  Lka.prototype.RI = function(t, e, r) {
      var n = e.length
        , i = e[2]
        , a = this._b.length;
      t = t.concat(t.slice(0, 3)),
      e = e.concat(e.slice(0, 3));
      for (var o = 0; o < n - 3; o += 3) {
          var s = Math.abs(t[o] - t[o + 3])
            , u = Math.abs(t[o + 1] - t[o + 4])
            , c = Math.round(i)
            , u = Math.round(Math.sqrt(Math.pow(s, 2) + Math.pow(u, 2)));
          0 < (c = fromValues$3(Math.ceil(u / floorHeight), Math.round(c / floorHeight)))[1] ? (mul(MaxInfo.qm, FaceTextureCoord.qm, c),
          mul(MaxInfo.Gm, FaceTextureCoord.Gm, c),
          mul(MaxInfo.Um, FaceTextureCoord.Um, c),
          mul(MaxInfo.Nm, FaceTextureCoord.Nm, c)) : (set$1(MaxInfo.qm, -1, -1),
          set$1(MaxInfo.Gm, -1, -1),
          set$1(MaxInfo.Um, -1, -1),
          set$1(MaxInfo.Nm, -1, -1)),
          c = this.zI(t.slice(o, o + 3), t.slice(o + 3, o + 6), e.slice(o + 3, o + 6)),
          this._b.kb(t[o], t[o + 1], t[o + 2], i, c, MaxInfo.qm),
          this._b.kb(e[o + 3], e[o + 4], e[o + 5], i, c, MaxInfo.Nm),
          this._b.kb(t[o + 3], t[o + 4], t[o + 5], i, c, MaxInfo.Gm),
          this._b.kb(t[o], t[o + 1], t[o + 2], i, c, MaxInfo.qm),
          this._b.kb(e[o], e[o + 1], e[o + 2], i, c, MaxInfo.Um),
          this._b.kb(e[o + 3], e[o + 4], e[o + 5], i, c, MaxInfo.Nm)
      }
      return 0 < (a = this._b.length - a) && (this.uploaded = !1),
      a
  }
  ,
  Lka.prototype.Nx = function(t, e, r) {
      if (t.length < 9)
          return 0;
      for (var n = this._b.length, i = earcut_1(t, r, 3), a = i.length - 1; 0 <= a; a--) {
          var o = 3 * i[a];
          this._b.kb(t[o], t[1 + o], t[2 + o], e, fromValues$1(0, 0, 1), FaceTextureCoord.empty)
      }
      return 0 < (n = this._b.length - n) && (this.uploaded = !1),
      n
  }
  ,
  Lka.prototype.zI = function(t, e, r) {
      var n = fromValues$1(t[0], t[1], t[2])
        , i = fromValues$1(e[0], e[1], e[2])
        , a = fromValues$1(r[0], r[1], r[2])
        , t = create$1()
        , e = create$1()
        , r = create$1();
      return sub(e, n, i),
      sub(r, a, i),
      cross(t, e, r),
      t
  }
  ,
  Lka.prototype.upload = function(t, e) {
      void 0 === e && (e = !1),
      this.uploaded || (this.destroy(),
      this.uploaded = !0,
      this.zs = t.fe(this._b.Mb, FillExtrusionArray.Rb),
      e && delete this._b)
  }
  ,
  Lka.prototype.destroy = function() {
      this.uploaded = !1,
      this.zs && (this.zs.context.deleteBuffer(this.zs),
      delete this.zs),
      this.Pc && (this.Pc.context.deleteBuffer(this.Pc),
      delete this.Pc)
  }
  ,
  Lka.prototype.reset = function() {
      this._b = new FillExtrusionArray,
      this.uploaded = !1
  }
  ,
  Lka);
  function Lka() {
      this._b = new FillExtrusionArray,
      this.uploaded = !1
  }
  var StyleParser = (Ala.Wb = function(t) {
      return {
          style: JSON.stringify(t.styles),
          TY: t.TY
      }
  }
  ,
  Ala.Gb = function(t) {
      var e = new Ala(t.TY);
      return e.jY(JSON.parse(t.style)),
      e
  }
  ,
  Ala.mV = function(t) {
      var e, r = {};
      for (e in t)
          if (t.hasOwnProperty(e)) {
              var n = t[e]
                , i = void 0;
              switch (e[0]) {
              case "1":
                  i = Ala.Xe;
                  break;
              case "2":
                  i = Ala.rn,
                  n.type = "road";
                  break;
              case "3":
                  i = Ala.cn;
                  break;
              case "4":
                  i = Ala.un;
                  break;
              case "5":
                  i = Ala.ln,
                  n.type = "building"
              }
              if (i) {
                  var o = (a = n.key)[0]
                    , a = a[1];
                  void 0 === r[o] && (r[o] = {});
                  for (var s = (r[o][a] = n).browserStyle, u = 0, c = s.length; u < c; u += 1) {
                      var f = s[u];
                      if (s[u] = i(f),
                      void 0 === n.z)
                          switch (e[0]) {
                          case "2":
                              n.z = (s[u] ? s[u][0] : n).z;
                              break;
                          case "1":
                          case "3":
                          case "4":
                          case "5":
                              n.z = s[u].z;
                              break;
                          default:
                              n.z = -1
                          }
                  }
                  Ala.Sn(n)
              } else
                  delete t[e]
          }
      return r
  }
  ,
  Ala.$V = function(t) {
      var e, r = {};
      for (e in t)
          if (t.hasOwnProperty(e)) {
              var n = t[e]
                , i = void 0;
              switch (e[0]) {
              case "1":
                  i = Ala.Xe;
                  break;
              case "2":
                  i = Ala.rn,
                  n.type = "road";
                  break;
              case "3":
                  i = Ala.cn;
                  break;
              case "4":
                  i = Ala.un;
                  break;
              case "5":
                  i = Ala.ln,
                  n.type = "building"
              }
              if (i) {
                  var o = (a = e.split(":"))[0]
                    , a = a[1];
                  void 0 === r[o] && (r[o] = {});
                  for (var s = (r[o][a] = n).browserStyle, u = 0, c = s.length; u < c; u += 1) {
                      var f = s[u];
                      if (s[u] = i(f),
                      void 0 === n.z)
                          switch (e[0]) {
                          case "2":
                              n.z = (s[u] ? s[u][0] : n).z;
                              break;
                          case "1":
                          case "3":
                          case "4":
                          case "5":
                              n.z = s[u].z;
                              break;
                          default:
                              n.z = -1
                          }
                  }
                  Ala.Sn(n)
              } else
                  delete t[e]
          }
      return r
  }
  ,
  Ala.SZ = function(t) {
      for (var e = t.stylemaps, r = e.length, n = {}, i = 0; i < r; i++) {
          var a = e[i]
            , o = a.key[0]
            , s = a.key[1]
            , u = {};
          void 0 === n[o] && (n[o] = {}),
          (n[o][s] = u).browserStyle = a.browserStyle;
          for (var c = {}, f = a.levelStyleMapping.length, l = 0; l < f; l += 2) {
              var h = a.levelStyleMapping[l]
                , d = a.levelStyleMapping[l + 1];
              c[h] = d
          }
          u.levelStyleMapping = c;
          var v = void 0;
          switch (o[0]) {
          case "1":
              v = Ala.Xe;
              break;
          case "2":
              v = Ala.rn,
              u.type = "road";
              break;
          case "3":
              v = Ala.cn;
              break;
          case "4":
              v = Ala.un;
              break;
          case "5":
              v = Ala.ln,
              u.type = "building"
          }
          for (var g = u.browserStyle, b = 0, p = g.length; b < p; b += 1) {
              var m = g[b];
              if (g[b] = v(m),
              void 0 === u.z)
                  switch (o[0]) {
                  case "2":
                      u.z = (g[b] ? g[b][0] : u).z;
                      break;
                  case "1":
                  case "3":
                  case "4":
                  case "5":
                      u.z = g[b].z;
                      break;
                  default:
                      u.z = -1
                  }
          }
          Ala.Sn(u)
      }
      return n
  }
  ,
  Ala.Je = function(t) {
      if (!t)
          return null;
      if (t && "0" !== t) {
          if (8 !== t.length || (t = t.slice(2) + t.slice(0, 2)),
          this.yQ && this.yQ[t])
              return Color.create(this.yQ[t]);
          var e = Color.create(t);
          return this.yQ || (this.yQ = {}),
          this.yQ[t] || (this.yQ[t] = e.rgba.slice(0)),
          e
      }
      return null
  }
  ,
  Ala.Sn = function(t) {
      if (void 0 !== t.levelStyleMapping[3] && (t.levelStyleMapping[2] = t.levelStyleMapping[3]),
      void 0 !== t.levelStyleMapping[20] && (t.levelStyleMapping[21] = t.levelStyleMapping[20],
      t.levelStyleMapping[22] = t.levelStyleMapping[20],
      t.levelStyleMapping[23] = t.levelStyleMapping[20],
      t.levelStyleMapping[24] = t.levelStyleMapping[20],
      t.levelStyleMapping[25] = t.levelStyleMapping[20],
      t.levelStyleMapping[26] = t.levelStyleMapping[20],
      t.levelStyleMapping[27] = t.levelStyleMapping[20],
      t.levelStyleMapping[28] = t.levelStyleMapping[20],
      t.levelStyleMapping[29] = t.levelStyleMapping[20],
      t.levelStyleMapping[30] = t.levelStyleMapping[20]),
      "building" === t.type && t.levelStyleMapping && (delete t.levelStyleMapping[15],
      delete t.levelStyleMapping[16]),
      "road" === t.type && void 0 !== t.levelStyleMapping[20]) {
          var e = t.browserStyle
            , r = t.levelStyleMapping[20]
            , n = e[r];
          if (n)
              for (var i = 1; i <= 10; i++) {
                  var a = [];
                  a.push(exports.Ln({}, n[0])),
                  a.push(exports.Ln({}, n[1])),
                  a[0].roadWidth = a[0].roadWidth * Math.pow(2, i),
                  a[0].borderWidth = a[0].borderWidth * Math.pow(2, i),
                  t.browserStyle.push(a),
                  t.levelStyleMapping[i + 20] = r + i
              }
      }
  }
  ,
  Ala.prototype._Q = function() {
      return Boolean(this.styles)
  }
  ,
  Ala.prototype.jY = function(t) {
      this.styles = t
  }
  ,
  Ala.prototype.clearStyleCache = function() {
      this.EI = -1,
      this.CI.clear()
  }
  ,
  Ala.prototype.setStyle = function(t) {
      this.Ve = t,
      this.clearStyleCache()
  }
  ,
  Ala.prototype.EY = function(t) {
      this.RV = t
  }
  ,
  Ala.prototype.MS = function(t) {
      if (this.RV)
          return this.RV[t]
  }
  ,
  Ala.prototype.kF = function(t) {
      this.bN = t
  }
  ,
  Ala.prototype.dn = function(t, e, r) {
      if (this.styles) {
          if (this.SI(t, e, r))
              return this.CI.get((t << 16) + e);
          if (this.jk(t, e, r)) {
              var n = this.Ak(t, e, r, this.Ve) || null;
              return this.CI.set((t << 16) + e, n),
              n
          }
          return n = this.kk(t, e, r) || null,
          this.CI.set((t << 16) + e, n),
          n
      }
  }
  ,
  Ala.prototype.MF = function(t, e) {
      var r = this.bN;
      if (!r || !r[t])
          return null;
      if (r[t].styles && r[t].styles.color) {
          var n, i, a = Util.getOptimalZoom(e), o = {};
          for (n in r[t].styles.color.nodesObj)
              r[t].styles.color.nodesObj.hasOwnProperty(n) && (o[(i = r[t].styles.color.nodesObj[n]).zoom] = i.value);
          return o[a = this._k(o, a)] ? Util.Hex2Rgba(o[a]) : null
      }
      return r[t].color ? (a = r[t].color,
      Util.Hex2Rgba(a)) : void 0
  }
  ,
  Ala.prototype.nX = function(t, e, r, n) {
      var i = this.Ve;
      return i && i[t] && i[t][e] ? (t = i[t][e]).styles && t.styles[r] ? (n = Util.getOptimalZoom(n),
      (n = this._k(t.styles[r].nodesObj, n)) && t.styles[r].nodesObj[n] ? t.styles[r].nodesObj[n] : null) : "visible" === r || t[r] && (t.visible || "3" !== e) ? t[r] : void 0 : null
  }
  ,
  Ala.prototype.Ok = function(t, e, r) {
      return void 0 !== this.styles[t] && (e = this.styles[t][e]) && void 0 !== (r = e.levelStyleMapping[r]) ? e.browserStyle[r] : null
  }
  ,
  Ala.prototype.xk = function(t, e, r) {
      if (void 0 === this.styles[t])
          return null;
      if (void 0 === this.styles[t][e])
          return null;
      if (void 0 === this.styles[t][e].levelStyleMapping)
          return null;
      if (void 0 === this.styles[t][e].browserStyle)
          return null;
      var n = this.styles[t][e].levelStyleMapping
        , i = this.styles[t][e].browserStyle
        , a = Math.floor(r);
      if (a === (t = Math.ceil(r))) {
          var o = i[n[a]];
          if (o) {
              var s = g = cloneDeep(o);
              return g instanceof Array && (s = g[0]),
              g
          }
          return null
      }
      if (e = r - a < .8 ? a : t,
      o = i[n[a]],
      n = i[n[t]],
      (o || n) && (o || e !== a) && (!o || n || e !== t) && (o || !n || a !== e)) {
          if (!o && n) {
              var u = g = cloneDeep(n);
              g instanceof Array && (u = g[0]);
              for (var c, f, l = Object.keys(u), h = 0; h < l.length; h++)
                  -1 < (d = l[h]).indexOf("Color") && u[d] && u[d].rgba ? (f = (r - a - .8) / .2,
                  c = Math.floor(u[d].rgba[3] * f),
                  u[d].rgba[3] = c) : -1 < d.indexOf("Width") && (u[d] = u[d] * (f = (r - a - .8) / .2));
              return g
          }
          if (o && n) {
              s = g = cloneDeep(o),
              u = n,
              g instanceof Array && (s = g[0]),
              g instanceof Array && (u = n[0]);
              for (var d, v, l = Object.keys(s), h = 0; h < l.length; h++)
                  -1 < (d = l[h]).indexOf("Width") && (v = (r - a) * (u[d] - s[d]) + s[d],
                  s[d] = v);
              return g
          }
          if (!o || n)
              return null;
          var g, s = g = cloneDeep(o);
          return g instanceof Array && (s = g[0]),
          g
      }
  }
  ,
  Ala.prototype.Ik = function(t, e, r) {
      var n = [];
      return n[0] = t[0] + (e[0] - t[0]) * r,
      n[1] = t[1] + (e[1] - t[1]) * r,
      n[2] = t[2] + (e[2] - t[2]) * r,
      n[3] = t[3] + (e[3] - t[3]) * r,
      n
  }
  ,
  Ala.prototype.kk = function(t, e, r) {
      var n = t.toString()[0];
      return "1" !== n && "4" !== n ? this.xk(t, e, r) : (r = Util.getOptimalZoom(r),
      this.Ok(t, e, r))
  }
  ,
  Ala.prototype.Ak = function(t, e, r, n) {
      var i = r
        , a = n[t][e] || n[t].all
        , o = null;
      if (a.styles) {
          var s = Util.getOptimalZoom(r);
          if (a.styles.visible && (n = this._k(a.styles.visible.nodesObj, s))) {
              var u = a.styles.visible.nodesObj[n];
              if (void 0 !== u && !1 === u)
                  return null
          }
          for (var c = (u = cloneDeep(this.styles[t][e])).levelStyleMapping, f = u.browserStyle, l = Object.keys(a.styles), h = 0; h < l.length; h++) {
              var d = l[h]
                , v = a.styles[d]
                , g = null;
              if (v.transitional && "linear" === v.transitional) {
                  var b, p = this.Tk(v.nodesObj, r);
                  if (!p || !p[0])
                      continue;
                  if (!(i = p[0]))
                      continue;
                  if (void 0 === (b = c[s]))
                      continue;
                  o = f[b],
                  1 === p.length ? g = v.nodesObj[i] : "color" === d && (g = this.Fk(p, v.nodesObj, r))
              } else {
                  if (!(i = this._k(v.nodesObj, s)))
                      continue;
                  if (void 0 === (b = c[s]))
                      continue;
                  o = f[b],
                  g = v.nodesObj[i]
              }
              if (!o)
                  return null;
              var m = t.toString()[0]
                , y = this.uP(a, s);
              if ("1" === m) {
                  if (!y)
                      return null;
                  this.NI(d, g, o, t, e)
              } else
                  "2" === m ? (this.Sk(d, g, o),
                  !y && o && o[1] && (o[1] = null)) : "4" === m ? this.LI(d, g, o) : this.Ck(d, g, o)
          }
      } else {
          if (void 0 !== a.visible && !1 === a.visible)
              return null;
          if (void 0 === (b = (c = this.styles[t][e].levelStyleMapping)[i = Util.getOptimalZoom(i)]))
              return null;
          if (!this.styles[t][e].browserStyle[b])
              return null;
          for (o = (f = (u = cloneDeep(this.styles[t][e])).browserStyle)[b],
          l = Object.keys(a),
          y = this.uP(a, i),
          h = 0; h < l.length; h++) {
              if (d = l[h],
              !o)
                  return null;
              if ("1" === (m = t.toString()[0])) {
                  if (!y)
                      return null;
                  this.NI(d, a[d], o, t, e)
              } else
                  "2" === m ? (this.Sk(d, a[d], o),
                  !y && o && o[1] && (o[1] = null)) : "4" === m ? this.LI(d, a[d], o) : this.Ck(d, a[d], o)
          }
      }
      return o
  }
  ,
  Ala.prototype.mn = function(t, e) {
      return void 0 === this.styles[t] ? null : (e = this.styles[t][e]) ? (e = e.levelStyleMapping || {},
      e = Object.keys(e),
      [parseInt(e[0], 10), parseInt(e[e.length - 1], 10)]) : []
  }
  ,
  Ala.prototype.Lw = function(t, e) {
      return void 0 !== this.styles[t] && (e = this.styles[t][e]) ? e.z : null
  }
  ,
  Ala.prototype.mW = function(t, e, r) {
      return 2 === Math.floor(t / 1e4) && (e = this.xk(t, e, r)) && e[0] ? (r = ["butt", "butt"],
      -1 < (e = e[0]).roadStyle.indexOf("roundcap") ? r[0] = "round" : -1 < e.roadStyle.indexOf("squarecap") && (r[0] = "square"),
      -1 < e.borderStyle.indexOf("roundcap") ? r[1] = "round" : -1 < e.borderStyle.indexOf("squarecap") && (r[1] = "square"),
      r) : defaultCap
  }
  ,
  Ala.prototype.destroy = function() {
      this.styles && (this.styles = {})
  }
  ,
  Ala.prototype.uP = function(t, e) {
      var r = !0;
      return t.styles && t.styles.showLabel ? (e = this._k(t.styles.showLabel.nodesObj, e),
      void 0 !== (e = t.styles.showLabel.nodesObj[e]) && !1 === e && (r = !1)) : void 0 !== t.showLabel && !1 === t.showLabel && (r = !1),
      r
  }
  ,
  Ala.prototype.SI = function(t, e, r) {
      return r = this.TY ? Math.floor(r) : Math.floor(r * (16.8 <= r ? 100 : 10)),
      this.EI !== r && (this.EI = r,
      this.CI.clear()),
      this.CI.has((t << 16) + e)
  }
  ,
  Ala.prototype.jk = function(t, e, r) {
      return !!(this.Ve && this.Ve[t] && (this.Ve[t][e] || this.Ve[t].all) && this.styles && this.styles[t] && this.styles[t][e])
  }
  ,
  Ala.prototype.Fk = function(t, e, r) {
      var n = Util.Hex2Rgba(e[t[0]])
        , e = Util.Hex2Rgba(e[t[1]])
        , t = (r - t[0]) / (t[1] - t[0]);
      return [Math.floor(n[0] + t * (e[0] - n[0])), Math.floor(n[1] + t * (e[1] - n[1])), Math.floor(n[2] + t * (e[2] - n[2])), Math.floor(n[3] + t * (e[3] - n[3]))]
  }
  ,
  Ala.prototype.UV = function(t) {
      for (var e = {}, r = 0; r < t.length; r++) {
          t[r];
          var n = t[r].zoom
            , i = t[r].value;
          e[n] = i
      }
      return e
  }
  ,
  Ala.prototype.Tk = function(t, e) {
      var r = [];
      if (t[e])
          return r.push(e),
          r;
      for (var n = !0, i = Math.floor(e); n && 0 < i; ) {
          if (t[i]) {
              r.push(i),
              n = !1;
              break
          }
          i--
      }
      for (i = Math.ceil(e),
      n = !0; n && i < 25; ) {
          if (t[i]) {
              r.push(i),
              n = !1;
              break
          }
          i++
      }
      return r
  }
  ,
  Ala.prototype._k = function(t, e) {
      if (!t)
          return null;
      if (!isUndefined$1(t[e]))
          return e;
      for (var r = !0, n = e; r && 0 < n; )
          if (t[--n] || !1 === t[n] || "" === t[n]) {
              r = !1;
              break
          }
      if (!r)
          return n;
      for (n = e; r && n < 25; )
          if (t[++n] || !1 === t[n] || "" === t[n]) {
              r = !1;
              break
          }
      return r ? null : n
  }
  ,
  Ala.prototype.Ck = function(t, e, r) {
      var n = null;
      switch (t) {
      case "color":
      case "fillColor":
          n = e,
          Array.isArray(e) || (n = Util.Hex2Rgba(e)),
          r.faceColor || (r.faceColor = new Color(n)),
          r.faceColor.rgba = n;
          break;
      case "fontSize":
          r.fontSize = e;
          break;
      case "texture":
          r.texture = e ? AMap.getConfig().protocol + "://" + e : "";
          break;
      case "backgroundColor":
          if (n = Util.Hex2Rgba(e),
          !r.holoColor)
              return;
          r.holoColor.rgba = n;
          break;
      case "strokeColor":
          n = Util.Hex2Rgba(e),
          r.borderColor || (r.borderColor = new Color(n)),
          r.borderColor.rgba = n;
          break;
      case "showIcon":
          !1 === e && r.iconID && (r.iconID = "0")
      }
  }
  ,
  Ala.prototype.LI = function(t, e, r) {
      var n = null;
      switch (t) {
      case "textFillColor":
          n = e,
          Array.isArray(e) || (n = Util.Hex2Rgba(e)),
          r.faceColor || (r.faceColor = new Color(n)),
          r.faceColor.rgba = n;
          break;
      case "fontSize":
          r.fontSize = e;
          break;
      case "backgroundColor":
          if (n = Util.Hex2Rgba(e),
          !r.holoColor)
              return;
          r.holoColor.rgba = n;
          break;
      case "textStrokeColor":
          n = Util.Hex2Rgba(e),
          r.borderColor || (r.borderColor = new Color(n)),
          r.borderColor.rgba = n;
          break;
      case "showIcon":
          !1 === e && r.iconID && (r.iconID = "0");
          break;
      case "showLabel":
          r.showText = e ? 1 : 0
      }
  }
  ,
  Ala.prototype.NI = function(t, e, r, n, i) {
      var a = null;
      switch (t) {
      case "showIcon":
          !1 === e && r.iconID && (r.iconID = "0");
          break;
      case "textFillColor":
          a = e,
          Array.isArray(e) || (a = Util.Hex2Rgba(e)),
          r.faceColor || (r.faceColor = new Color(a)),
          r.faceColor.rgba = a;
          break;
      case "fontSize":
          r.fontSize = e;
          break;
      case "backgroundColor":
          if (a = Util.Hex2Rgba(e),
          !r.holoColor)
              return void (10002 !== n || 8 !== i && 37 !== i || (r.holoColor = new Color(a)));
          r.holoColor.rgba = a;
          break;
      case "textStrokeColor":
          a = Util.Hex2Rgba(e),
          r.borderColor || (r.borderColor = new Color(a)),
          r.borderColor.rgba = a;
          break;
      case "sel-highlight":
          r["sel-highlight"] = !0 === e;
          break;
      case "sel-textFillColor":
          a = Util.Hex2Rgba(e),
          r["sel-textFillColor"] = map(a, function(t) {
              return t / 255
          });
          break;
      case "sel-textStrokeColor":
          a = Util.Hex2Rgba(e),
          r["sel-textStrokeColor"] = map(a, function(t) {
              return t / 255
          });
          break;
      case "label-bg":
          r["label-bg"] = !0 === e;
          break;
      case "label-bgColor":
          if (a = Util.Hex2Rgba(e),
          !r.holoColor)
              return void (10002 !== n || 8 !== i && 37 !== i || (r.holoColor = new Color(a)));
          r.holoColor.rgba = a;
          break;
      case "showLabel":
          r.showText = e ? 1 : 0
      }
  }
  ,
  Ala.prototype.Sk = function(t, e, r) {
      var n, i = null;
      switch (t) {
      case "color":
      case "fillColor":
          i = Util.Hex2Rgba(e),
          r[0] && (r[0].roadColor || (r[0].roadColor = new Color(i)),
          r[0].roadColor.rgba = i);
          break;
      case "fillOpacity":
          r[0] && r[0].roadColor && r[0].roadColor.rgba && (n = r[0].roadColor.rgba,
          i = Util.Opacity2Rgba(e, n),
          r[0].roadColor.rgba = i);
          break;
      case "fillWidth":
          r[0] && (r[0].roadWidth = e);
          break;
      case "strokeColor":
          i = Util.Hex2Rgba(e),
          r[0] && (r[0].borderColor || (r[0].borderColor = new Color(i)),
          r[0].borderColor.rgba = i);
          break;
      case "strokeWidth":
          r[0] && (r[0].borderWidth = e);
          break;
      case "textFillColor":
          r[1] && (i = Util.Hex2Rgba(e),
          r[1].faceColor || (r[1].faceColor = new Color(i)),
          r[1].faceColor.rgba = i);
          break;
      case "textStrokeColor":
          r[1] && (i = Util.Hex2Rgba(e),
          r[1].borderColor || (r[1].borderColor = new Color(i)),
          r[1].borderColor.rgba = i);
          break;
      case "fontSize":
          r[1] && (r[1].fontSize = e);
          break;
      case "showLabel":
          r.showText = e ? 1 : 0
      }
  }
  ,
  Ala.Xe = function(t) {
      var e = t.split("&");
      return (t = {}).iconID = e[0],
      t.fontSize = parseInt(e[1], 10),
      t.faceColor = Ala.Je(e[2]),
      t.borderColor = Ala.Je(e[3]),
      t.holoColor = Ala.Je(e[4]),
      t.showMode = parseInt(e[6], 10),
      t.showText = 2 === t.showMode ? 0 : 1,
      t.forceShow = parseInt(e[7], 10),
      t.clickEnable = parseInt(e[8], 10),
      t.xOffset = parseInt(e[9], 10),
      t.yOffset = parseInt(e[10], 10),
      t.iconFile = e[5],
      t
  }
  ,
  Ala.rn = function(t) {
      var e = t.split("|")
        , r = e[0].split("&")
        , t = {};
      e[0] ? (t.roadWidth = parseInt(r[0], 10),
      t.roadColor = Ala.Je(r[1]),
      t.roadStyle = r[2] || "",
      t.borderWidth = parseInt(r[3], 10),
      t.borderColor = Ala.Je(r[4]),
      t.borderStyle = r[5] || "",
      t.z = parseInt(r[6], 10),
      t.roadStyle && t.roadStyle.indexOf && (0 === t.roadStyle.indexOf("dash") ? (t.roadDash = t.roadStyle.substring(4).slice(1, -1).split(","),
      t.roadDash = map(t.roadDash, function(t) {
          return parseInt(t, 10)
      }),
      2 === t.roadDash.length && (r = t.roadDash).push.apply(r, t.roadDash)) : 0 < t.roadStyle.indexOf("railway") || t.roadStyle.indexOf("dash_crewel")),
      t.borderStyle && t.borderStyle.indexOf && (0 === t.borderStyle.indexOf("dash") ? (t.borderDash = t.borderStyle.substring(4).slice(1, -1).split(","),
      t.borderDash = map(t.borderDash, function(t) {
          return parseInt(t, 10)
      }),
      2 === t.borderDash.length && (n = t.borderDash).push.apply(n, t.borderDash)) : 0 < t.borderStyle.indexOf("railway") || t.borderStyle.indexOf("dash_crewel"))) : (t.roadWidth = 0,
      t.roadColor = Ala.Je("00000000"),
      t.roadStyle = "",
      t.borderWidth = 0,
      t.borderColor = Ala.Je("00000000"),
      t.borderStyle = "",
      t.z = 0);
      var n = {};
      return e[1] && (e = e[1].split("&"),
      n.iconID = "",
      n.fontSize = parseInt(e[1], 10),
      n.faceColor = Ala.Je(e[2]),
      n.borderColor = Ala.Je(e[3]),
      n.z = parseInt(e[4], 10)),
      [t, n]
  }
  ,
  Ala.ln = function(t) {
      var e = t.split("&");
      return (t = {}).faceColor = Ala.Je(e[0]),
      t.borderWidth = parseInt(e[1], 10),
      t.borderColor = Ala.Je(e[2]),
      t.wallColor1 = Ala.Je(e[3]),
      t.wallColor2 = Ala.Je(e[4]),
      t.opacity = parseFloat(e[5]),
      t.z = parseInt(e[6], 10),
      t
  }
  ,
  Ala.un = function(t) {
      var e = t.split("&");
      return (t = {}).iconID = e[0],
      t.fontSize = parseInt(e[1], 10),
      t.faceColor = Ala.Je(e[2]),
      t.borderColor = Ala.Je(e[3]),
      t.holoColor = null,
      t.z = parseInt(e[5], 10),
      t
  }
  ,
  Ala.cn = function(t) {
      var e = t.split("&");
      return (t = {}).faceColor = Ala.Je(e[0]),
      t.borderWidth = 0,
      t.borderColor = null,
      t.z = parseInt(e[3], 10),
      t
  }
  ,
  Ala);
  function Ala(t) {
      this.TY = t,
      this.CI = new AdaptorMap,
      this.Ve = null,
      this.RV = null,
      this.bN = null
  }
  var NebulaSegements = (aqa.prototype.add = function(t, e, r, n, i, a, o, s) {
      this.WM.eT(t, e, i, n) && a === this.WM.bz && o + "" == this.WM.roofColor + "" && s + "" == this.WM.wallColor + "" || (this.GM = t,
      this.HM = e,
      this.VM += this.WM ? this.WM.length : 0,
      this.WM = new LineSegement(t,e,this.VM,n,i,a,o,s),
      this.jc.push(this.WM)),
      this.WM.add(r)
  }
  ,
  aqa.prototype.reset = function() {
      this.WM = new LineSegement(-1,-1,-1,-1,-1)
  }
  ,
  aqa);
  function aqa() {
      this.jc = [],
      this.GM = -1,
      this.HM = -1,
      this.VM = 0,
      this.WM = new LineSegement(-1,-1,-1,-1,-1)
  }
  var LineSegement = (jqa.prototype.add = function(t) {
      this.length += t
  }
  ,
  jqa.prototype.eT = function(t, e, r, n) {
      return this.mainkey === t && this.subkey === e && this.maxzoom === r && this.minzoom === n
  }
  ,
  jqa);
  function jqa(t, e, r, n, i, a, o, s) {
      this.mainkey = t,
      this.subkey = e,
      this.offset = r,
      this.minzoom = n,
      this.maxzoom = i,
      this.bz = a,
      this.roofColor = o,
      this.wallColor = s,
      this.length = 0
  }
  var PolygonSegements = (xqa.prototype.add = function(t) {
      this.jc.push({
          length: t,
          offset: this.VM
      }),
      this.VM += t
  }
  ,
  xqa.prototype.reset = function() {
      this.jc = [],
      this.VM = 0
  }
  ,
  xqa.prototype.destroy = function() {
      this.jc && 0 < this.jc.length && (this.jc = [])
  }
  ,
  xqa);
  function xqa() {
      this.jc = [],
      this.VM = 0
  }
  var VectorTileFeature = function(t, e, r, n, i) {
      this.properties = {},
      this.extent = r,
      this.type = 0,
      this.fA = t,
      this.hA = -1,
      this.cA = n,
      this.vA = i,
      t.nw(readFeature, this, e)
  };
  function readFeature(t, e, r) {
      1 === t ? e.id = r.ow() : 2 === t ? readTag(r, e) : 3 === t ? e.type = r.ow() : 4 === t && (e.hA = r.pos)
  }
  function readTag(t, e) {
      for (var r = t.ow() + t.pos; t.pos < r; ) {
          var n = e.cA[t.ow()]
            , i = e.vA[t.ow()];
          e.properties[n] = i
      }
  }
  function classifyRings(t) {
      var e = t.length;
      if (e <= 1)
          return [t];
      for (var r, n = [], i = [], a = 0; a < e; a++) {
          var o = signedArea$1(t[a]);
          0 !== o && ((r = void 0 === r ? o < 0 : r) === o < 0 ? (i && n.push(i),
          i = [t[a]]) : i.push(t[a]))
      }
      return i && n.push(i),
      n
  }
  function signedArea$1(t) {
      for (var e, r, n = 0, i = 0, a = t.length, o = a - 1; i < a; o = i++)
          e = t[i],
          n += ((r = t[o]).x - e.x) * (e.y + r.y);
      return n
  }
  VectorTileFeature.types = ["Unknown", "Point", "LineString", "Polygon"],
  VectorTileFeature.prototype.Dw = function() {
      var t = this.fA;
      t.pos = this.hA;
      for (var e, r = t.ow() + t.pos, n = 1, i = 0, a = 0, o = 0, s = [], u = []; t.pos < r; )
          if (i <= 0 && (n = 7 & (e = t.ow()),
          i = e >> 3),
          i--,
          1 === n || 2 === n)
              a += t.lA(),
              o += t.lA(),
              1 === n && (u && 0 < u.length && s.push(u),
              u = []),
              u.push([a, o]);
          else {
              if (7 !== n)
                  throw new Error("unknown command " + n);
              u && u.push([u[0][0], u[0][1]])
          }
      return u && 0 < u.length && s.push(u),
      this.lines = s
  }
  ,
  VectorTileFeature.prototype.Ro = function() {
      var t = this.fA;
      t.pos = this.hA;
      for (var e, r = t.ow() + t.pos, n = 1, i = 0, a = 0, o = 0, s = 1 / 0, u = -1 / 0, c = 1 / 0, f = -1 / 0; t.pos < r; )
          if (i <= 0 && (n = 7 & (e = t.ow()),
          i = e >> 3),
          i--,
          1 === n || 2 === n)
              (a += t.lA()) < s && (s = a),
              u < a && (u = a),
              (o += t.lA()) < c && (c = o),
              f < o && (f = o);
          else if (7 !== n)
              throw new Error("unknown command " + n);
      return [s, c, u, f]
  }
  ,
  VectorTileFeature.prototype.dA = function(t, e, r) {
      var n, i = this.extent * Math.pow(2, r), a = this.extent * t, o = this.extent * e, s = this.Dw(), e = VectorTileFeature.types[this.type];
      function u(t) {
          for (var e = 0; e < t.length; e++) {
              var r = t[e]
                , n = 180 - 360 * (r.y + o) / i;
              t[e] = [360 * (r.x + a) / i - 180, 360 / Math.PI * Math.atan(Math.exp(n * Math.PI / 180)) - 90]
          }
      }
      switch (this.type) {
      case 1:
          for (var c = [], f = 0; f < s.length; f++)
              c[f] = s[f][0];
          u(s = c);
          break;
      case 2:
          for (f = 0; f < s.length; f++)
              u(s[f]);
          break;
      case 3:
          for (s = classifyRings(s),
          f = 0; f < s.length; f++)
              for (n = 0; n < s[f].length; n++)
                  u(s[f][n])
      }
      return 1 === s.length ? s = s[0] : e = "Multi" + e,
      e = {
          type: "Feature",
          geometry: {
              type: e,
              coordinates: s
          },
          properties: this.properties
      },
      "id"in this && (e.id = this.id),
      e
  }
  ;
  var VectorTileLayer = function(t, e) {
      this.version = 1,
      this.name = null,
      this.extent = 4096,
      this.length = 0,
      this.fA = t,
      this.cA = [],
      this.vA = [],
      this.Cw = [],
      t.nw(readLayer, this, e),
      this.length = this.Cw.length
  };
  function readLayer(t, e, r) {
      15 === t ? e.version = r.ow() : 1 === t ? e.name = r.aw() : 5 === t ? e.extent = r.ow() : 2 === t ? e.Cw.push(r.pos) : 3 === t ? e.cA.push(r.aw()) : 4 === t && e.vA.push(readValueMessage(r))
  }
  function readValueMessage(t) {
      for (var e = null, r = t.ow() + t.pos; t.pos < r; )
          var n = t.ow() >> 3
            , e = 1 == n ? t.aw() : 2 == n ? t.pA() : 3 == n ? t.yA() : 4 == n ? t.mA() : 5 == n ? t.ow() : 6 == n ? t.lA() : 7 == n ? t.vw() : null;
      return e
  }
  VectorTileLayer.prototype.Gw = function(t) {
      if (t < 0 || t >= this.Cw.length)
          throw new Error("feature index out of bounds");
      return this.fA.pos = this.Cw[t],
      t = this.fA.ow() + this.fA.pos,
      new VectorTileFeature(this.fA,t,this.extent,this.cA,this.vA)
  }
  ;
  var VectorTile$1 = function(t, e) {
      this.type = "vector",
      this.layers = t.nw(readTile, {}, e)
  };
  function readTile(t, e, r) {
      3 !== t || (r = new VectorTileLayer(r,r.ow() + r.pos)).length && (e[r.name] = r)
  }
  VectorTile$1.Wb = function(t) {
      return t
  }
  ,
  VectorTile$1.Gb = function(t) {
      return t
  }
  ,
  VectorTile$1.prototype.nG = function(t) {
      this.type = t
  }
  ;
  var SHIFT_LEFT_32 = 4294967296
    , SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32
    , Pbf = (bsa.prototype.destroy = function() {
      this.gA = new Uint8Array(0)
  }
  ,
  bsa.prototype.nw = function(t, e, r) {
      for (r = r || this.length; this.pos < r; ) {
          var n = this.ow()
            , i = n >> 3
            , a = this.pos;
          this.type = 7 & n,
          t(i, e, this),
          this.pos === a && this.wA(n)
      }
      return e
  }
  ,
  bsa.prototype.MA = function(t, e) {
      return this.nw(t, e, this.ow() + this.pos)
  }
  ,
  bsa.prototype.jA = function() {
      var t = readUInt32(this.gA, this.pos);
      return this.pos += 4,
      t
  }
  ,
  bsa.prototype.AA = function() {
      var t = readInt32(this.gA, this.pos);
      return this.pos += 4,
      t
  }
  ,
  bsa.prototype.kA = function() {
      var t = readUInt32(this.gA, this.pos) + readUInt32(this.gA, this.pos + 4) * SHIFT_LEFT_32;
      return this.pos += 8,
      t
  }
  ,
  bsa.prototype.OA = function() {
      var t = readUInt32(this.gA, this.pos) + readInt32(this.gA, this.pos + 4) * SHIFT_LEFT_32;
      return this.pos += 8,
      t
  }
  ,
  bsa.prototype.pA = function() {
      var t = this.xA(this.gA, this.pos, !0, 23, 4);
      return this.pos += 4,
      t
  }
  ,
  bsa.prototype.yA = function() {
      var t = this.xA(this.gA, this.pos, !0, 52, 8);
      return this.pos += 8,
      t
  }
  ,
  bsa.prototype.ow = function(t) {
      var e = this.gA
        , r = e[this.pos++]
        , n = 127 & r;
      return r < 128 ? n : (n |= (127 & (r = e[this.pos++])) << 7,
      r < 128 ? n : (n |= (127 & (r = e[this.pos++])) << 14,
      r < 128 ? n : (n |= (127 & (r = e[this.pos++])) << 21,
      r < 128 ? n : readVarintRemainder(n |= (15 & e[this.pos]) << 28, t, this))))
  }
  ,
  bsa.prototype.mA = function() {
      return this.ow(!0)
  }
  ,
  bsa.prototype.lA = function() {
      var t = this.ow();
      return t % 2 == 1 ? (t + 1) / -2 : t / 2
  }
  ,
  bsa.prototype.vw = function() {
      return Boolean(this.ow())
  }
  ,
  bsa.prototype.aw = function() {
      var t = this.ow() + this.pos
        , e = readUtf8(this.gA, this.pos, t);
      return this.pos = t,
      e
  }
  ,
  bsa.prototype.mw = function() {
      var t = this.ow() + this.pos
        , e = this.gA.subarray(this.pos, t);
      return this.pos = t,
      e
  }
  ,
  bsa.prototype.tw = function(t, e) {
      var r = readPackedEnd(this);
      for (t = t || []; this.pos < r; )
          t.push(this.ow(e));
      return t
  }
  ,
  bsa.prototype.IA = function(t) {
      var e = readPackedEnd(this);
      for (t = t || []; this.pos < e; )
          t.push(this.lA());
      return t
  }
  ,
  bsa.prototype.TA = function(t) {
      var e = readPackedEnd(this);
      for (t = t || []; this.pos < e; )
          t.push(this.vw());
      return t
  }
  ,
  bsa.prototype.FA = function(t) {
      var e = readPackedEnd(this);
      for (t = t || []; this.pos < e; )
          t.push(this.pA());
      return t
  }
  ,
  bsa.prototype._A = function(t) {
      var e = readPackedEnd(this);
      for (t = t || []; this.pos < e; )
          t.push(this.yA());
      return t
  }
  ,
  bsa.prototype.SA = function(t) {
      var e = readPackedEnd(this);
      for (t = t || []; this.pos < e; )
          t.push(this.jA());
      return t
  }
  ,
  bsa.prototype.CA = function(t) {
      var e = readPackedEnd(this);
      for (t = t || []; this.pos < e; )
          t.push(this.AA());
      return t
  }
  ,
  bsa.prototype.EA = function(t) {
      var e = readPackedEnd(this);
      for (t = t || []; this.pos < e; )
          t.push(this.kA());
      return t
  }
  ,
  bsa.prototype.NA = function(t) {
      var e = readPackedEnd(this);
      for (t = t || []; this.pos < e; )
          t.push(this.OA());
      return t
  }
  ,
  bsa.prototype.wA = function(t) {
      (t &= 7) === bsa.LA || (t === bsa.DA ? this.pos = this.ow() + this.pos : t === bsa.RA ? this.pos += 4 : t === bsa.PA ? this.pos += 8 : console.log("Unimplemented type: " + t))
  }
  ,
  bsa.prototype.UA = function(t, e) {
      this.BA(t << 3 | e)
  }
  ,
  bsa.prototype.zA = function(t) {
      for (var e, r = this.length || 16; r < this.pos + t; )
          r *= 2;
      r !== this.length && ((e = new Uint8Array(r)).set(this.gA),
      this.gA = e,
      this.length = r)
  }
  ,
  bsa.prototype.finish = function() {
      return this.length = this.pos,
      this.pos = 0,
      this.gA.subarray(0, this.length)
  }
  ,
  bsa.prototype.qA = function(t) {
      this.zA(4),
      writeInt32(this.gA, t, this.pos),
      this.pos += 4
  }
  ,
  bsa.prototype.WA = function(t) {
      this.zA(4),
      writeInt32(this.gA, t, this.pos),
      this.pos += 4
  }
  ,
  bsa.prototype.GA = function(t) {
      this.zA(8),
      writeInt32(this.gA, -1 & t, this.pos),
      writeInt32(this.gA, Math.floor(t * SHIFT_RIGHT_32), this.pos + 4),
      this.pos += 8
  }
  ,
  bsa.prototype.HA = function(t) {
      this.zA(8),
      writeInt32(this.gA, -1 & t, this.pos),
      writeInt32(this.gA, Math.floor(t * SHIFT_RIGHT_32), this.pos + 4),
      this.pos += 8
  }
  ,
  bsa.prototype.BA = function(t) {
      268435455 < (t = +t || 0) || t < 0 ? writeBigVarint(t, this) : (this.zA(4),
      this.gA[this.pos++] = 127 & t | (127 < t ? 128 : 0),
      t <= 127 || (this.gA[this.pos++] = 127 & (t >>>= 7) | (127 < t ? 128 : 0),
      t <= 127 || (this.gA[this.pos++] = 127 & (t >>>= 7) | (127 < t ? 128 : 0),
      t <= 127 || (this.gA[this.pos++] = t >>> 7 & 127))))
  }
  ,
  bsa.prototype.VA = function(t) {
      this.BA(t < 0 ? 2 * -t - 1 : 2 * t)
  }
  ,
  bsa.prototype.$A = function(t) {
      this.BA(Boolean(t))
  }
  ,
  bsa.prototype.YA = function(t) {
      t = String(t),
      this.zA(4 * t.length),
      this.pos++;
      var e = this.pos;
      this.pos = writeUtf8(this.gA, t, this.pos),
      128 <= (t = this.pos - e) && makeRoomForExtraLength(e, t, this),
      this.pos = e - 1,
      this.BA(t),
      this.pos += t
  }
  ,
  bsa.prototype.KA = function(t) {
      this.zA(4),
      this.XA(this.gA, t, this.pos, !0, 23, 4),
      this.pos += 4
  }
  ,
  bsa.prototype.JA = function(t) {
      this.zA(8),
      this.XA(this.gA, t, this.pos, !0, 52, 8),
      this.pos += 8
  }
  ,
  bsa.prototype.ZA = function(t) {
      var e = t.length;
      this.BA(e),
      this.zA(e);
      for (var r = 0; r < e; r++)
          this.gA[this.pos++] = t[r]
  }
  ,
  bsa.prototype.QA = function(t, e) {
      this.pos++;
      var r = this.pos;
      t(e, this),
      128 <= (e = this.pos - r) && makeRoomForExtraLength(r, e, this),
      this.pos = r - 1,
      this.BA(e),
      this.pos += e
  }
  ,
  bsa.prototype.fw = function(t, e, r) {
      this.UA(t, bsa.DA),
      this.QA(e, r)
  }
  ,
  bsa.prototype.tk = function(t, e) {
      this.fw(t, writePackedVarint, e)
  }
  ,
  bsa.prototype.rk = function(t, e) {
      this.fw(t, writePackedSVarint, e)
  }
  ,
  bsa.prototype.nk = function(t, e) {
      this.fw(t, writePackedBoolean, e)
  }
  ,
  bsa.prototype.ik = function(t, e) {
      this.fw(t, writePackedFloat, e)
  }
  ,
  bsa.prototype.ek = function(t, e) {
      this.fw(t, writePackedDouble, e)
  }
  ,
  bsa.prototype.ak = function(t, e) {
      this.fw(t, writePackedFixed32, e)
  }
  ,
  bsa.prototype.uk = function(t, e) {
      this.fw(t, writePackedSFixed32, e)
  }
  ,
  bsa.prototype.sk = function(t, e) {
      this.fw(t, writePackedFixed64, e)
  }
  ,
  bsa.prototype.fk = function(t, e) {
      this.fw(t, writePackedSFixed64, e)
  }
  ,
  bsa.prototype.ww = function(t, e) {
      this.UA(t, bsa.DA),
      this.ZA(e)
  }
  ,
  bsa.prototype.hk = function(t, e) {
      this.UA(t, bsa.RA),
      this.qA(e)
  }
  ,
  bsa.prototype.ck = function(t, e) {
      this.UA(t, bsa.RA),
      this.WA(e)
  }
  ,
  bsa.prototype.vk = function(t, e) {
      this.UA(t, bsa.PA),
      this.GA(e)
  }
  ,
  bsa.prototype.lk = function(t, e) {
      this.UA(t, bsa.PA),
      this.HA(e)
  }
  ,
  bsa.prototype.rw = function(t, e) {
      this.UA(t, bsa.LA),
      this.BA(e)
  }
  ,
  bsa.prototype.dk = function(t, e) {
      this.UA(t, bsa.LA),
      this.VA(e)
  }
  ,
  bsa.prototype.uw = function(t, e) {
      this.UA(t, bsa.DA),
      this.YA(e)
  }
  ,
  bsa.prototype.bk = function(t, e) {
      this.UA(t, bsa.RA),
      this.KA(e)
  }
  ,
  bsa.prototype.pk = function(t, e) {
      this.UA(t, bsa.PA),
      this.JA(e)
  }
  ,
  bsa.prototype.hw = function(t, e) {
      this.rw(t, Boolean(e))
  }
  ,
  bsa.prototype.xA = function(t, e, r, n, i) {
      var a, o, s = 8 * i - n - 1, u = (1 << s) - 1, c = u >> 1, f = -7, l = r ? i - 1 : 0, h = r ? -1 : 1, r = t[e + l];
      for (l += h,
      a = r & (1 << -f) - 1,
      r >>= -f,
      f += s; 0 < f; a = 256 * a + t[e + l],
      l += h,
      f -= 8)
          ;
      for (o = a & (1 << -f) - 1,
      a >>= -f,
      f += n; 0 < f; o = 256 * o + t[e + l],
      l += h,
      f -= 8)
          ;
      if (0 === a)
          a = 1 - c;
      else {
          if (a === u)
              return o ? NaN : 1 / 0 * (r ? -1 : 1);
          o += Math.pow(2, n),
          a -= c
      }
      return (r ? -1 : 1) * o * Math.pow(2, a - n)
  }
  ,
  bsa.prototype.XA = function(t, e, r, n, i, a) {
      var o, s, u = 8 * a - i - 1, c = (1 << u) - 1, f = c >> 1, l = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0, h = n ? 0 : a - 1, d = n ? 1 : -1, a = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0;
      for (e = Math.abs(e),
      isNaN(e) || e === 1 / 0 ? (s = isNaN(e) ? 1 : 0,
      o = c) : (o = Math.floor(Math.log(e) / Math.LN2),
      e * (n = Math.pow(2, -o)) < 1 && (o--,
      n *= 2),
      2 <= (e += 1 <= o + f ? l / n : l * Math.pow(2, 1 - f)) * n && (o++,
      n /= 2),
      c <= o + f ? (s = 0,
      o = c) : 1 <= o + f ? (s = (e * n - 1) * Math.pow(2, i),
      o += f) : (s = e * Math.pow(2, f - 1) * Math.pow(2, i),
      o = 0)); 8 <= i; t[r + h] = 255 & s,
      h += d,
      s /= 256,
      i -= 8)
          ;
      for (o = o << i | s,
      u += i; 0 < u; t[r + h] = 255 & o,
      h += d,
      o /= 256,
      u -= 8)
          ;
      t[r + h - d] |= 128 * a
  }
  ,
  bsa.LA = 0,
  bsa.PA = 1,
  bsa.DA = 2,
  bsa.RA = 5,
  bsa);
  function bsa(t) {
      this.gA = ArrayBuffer.isView && ArrayBuffer.isView(t) ? t : new Uint8Array(t || 0),
      this.pos = 0,
      this.type = 0,
      this.length = this.gA.length
  }
  function readVarintRemainder(t, e, r) {
      var n = r.gA
        , i = n[r.pos++]
        , a = (112 & i) >> 4;
      if (i < 128)
          return toNum(t, a, e);
      if (a |= (127 & (i = n[r.pos++])) << 3,
      i < 128)
          return toNum(t, a, e);
      if (a |= (127 & (i = n[r.pos++])) << 10,
      i < 128)
          return toNum(t, a, e);
      if (a |= (127 & (i = n[r.pos++])) << 17,
      i < 128)
          return toNum(t, a, e);
      if (a |= (127 & (i = n[r.pos++])) << 24,
      i < 128)
          return toNum(t, a, e);
      if (a |= (1 & (i = n[r.pos++])) << 31,
      i < 128)
          return toNum(t, a, e);
      throw new Error("Expected varint not more than 10 bytes")
  }
  function readPackedEnd(t) {
      return t.type === Pbf.DA ? t.ow() + t.pos : t.pos + 1
  }
  function toNum(t, e, r) {
      return r ? 4294967296 * e + (t >>> 0) : 4294967296 * (e >>> 0) + (t >>> 0)
  }
  function writeBigVarint(t, e) {
      var r, n;
      if (0 <= t ? (r = t % 4294967296 | 0,
      n = t / 4294967296 | 0) : (n = ~(-t / 4294967296),
      4294967295 ^ (r = ~(-t % 4294967296)) ? r = r + 1 | 0 : n = n + 1 | (r = 0)),
      0x10000000000000000 <= t || t < -0x10000000000000000)
          throw new Error("Given varint doesn't fit into 10 bytes");
      e.zA(10),
      writeBigVarintLow(r, n, e),
      writeBigVarintHigh(n, e)
  }
  function writeBigVarintLow(t, e, r) {
      r.gA[r.pos++] = 127 & t | 128,
      t >>>= 7,
      r.gA[r.pos++] = 127 & t | 128,
      t >>>= 7,
      r.gA[r.pos++] = 127 & t | 128,
      t >>>= 7,
      r.gA[r.pos++] = 127 & t | 128,
      r.gA[r.pos] = 127 & (t >>>= 7)
  }
  function writeBigVarintHigh(t, e) {
      var r = (7 & t) << 4;
      e.gA[e.pos++] |= r | ((t >>>= 3) ? 128 : 0),
      t && (e.gA[e.pos++] = 127 & t | ((t >>>= 7) ? 128 : 0),
      t && (e.gA[e.pos++] = 127 & t | ((t >>>= 7) ? 128 : 0),
      t && (e.gA[e.pos++] = 127 & t | ((t >>>= 7) ? 128 : 0),
      t && (e.gA[e.pos++] = 127 & t | ((t >>>= 7) ? 128 : 0),
      t && (e.gA[e.pos++] = 127 & t)))))
  }
  function makeRoomForExtraLength(t, e, r) {
      var n = e <= 16383 ? 1 : e <= 2097151 ? 2 : e <= 268435455 ? 3 : Math.ceil(Math.log(e) / (7 * Math.LN2));
      r.zA(n);
      for (var i = r.pos - 1; t <= i; i--)
          r.gA[i + n] = r.gA[i]
  }
  function writePackedVarint(t, e) {
      for (var r = 0; r < t.length; r++)
          e.BA(t[r])
  }
  function writePackedSVarint(t, e) {
      for (var r = 0; r < t.length; r++)
          e.VA(t[r])
  }
  function writePackedFloat(t, e) {
      for (var r = 0; r < t.length; r++)
          e.KA(t[r])
  }
  function writePackedDouble(t, e) {
      for (var r = 0; r < t.length; r++)
          e.JA(t[r])
  }
  function writePackedBoolean(t, e) {
      for (var r = 0; r < t.length; r++)
          e.$A(t[r])
  }
  function writePackedFixed32(t, e) {
      for (var r = 0; r < t.length; r++)
          e.qA(t[r])
  }
  function writePackedSFixed32(t, e) {
      for (var r = 0; r < t.length; r++)
          e.WA(t[r])
  }
  function writePackedFixed64(t, e) {
      for (var r = 0; r < t.length; r++)
          e.GA(t[r])
  }
  function writePackedSFixed64(t, e) {
      for (var r = 0; r < t.length; r++)
          e.HA(t[r])
  }
  function readUInt32(t, e) {
      return (t[e] | t[e + 1] << 8 | t[e + 2] << 16) + 16777216 * t[e + 3]
  }
  function writeInt32(t, e, r) {
      t[r] = e,
      t[r + 1] = e >>> 8,
      t[r + 2] = e >>> 16,
      t[r + 3] = e >>> 24
  }
  function readInt32(t, e) {
      return (t[e] | t[e + 1] << 8 | t[e + 2] << 16) + (t[e + 3] << 24)
  }
  function readUtf8(t, e, r) {
      for (var n = "", i = e; i < r; ) {
          var a = t[i]
            , o = null
            , s = 239 < a ? 4 : 223 < a ? 3 : 191 < a ? 2 : 1;
          if (r < i + s)
              break;
          var u, c = void 0, f = void 0;
          1 === s ? a < 128 && (o = a) : 2 === s ? 128 == (192 & (c = t[i + 1])) && (o = (31 & a) << 6 | 63 & c) <= 127 && (o = null) : 3 === s ? (c = t[i + 1],
          f = t[i + 2],
          128 == (192 & c) && 128 == (192 & f) && ((o = (15 & a) << 12 | (63 & c) << 6 | 63 & f) <= 2047 || 55296 <= o && o <= 57343) && (o = null)) : 4 === s && (c = t[i + 1],
          f = t[i + 2],
          u = t[i + 3],
          128 == (192 & c) && 128 == (192 & f) && 128 == (192 & u) && ((o = (15 & a) << 18 | (63 & c) << 12 | (63 & f) << 6 | 63 & u) <= 65535 || 1114112 <= o) && (o = null)),
          null === o ? (o = 65533,
          s = 1) : 65535 < o && (o -= 65536,
          n += String.fromCharCode(o >>> 10 & 1023 | 55296),
          o = 56320 | 1023 & o),
          n += String.fromCharCode(o),
          i += s
      }
      return n
  }
  function writeUtf8(t, e, r) {
      for (var n = 0, i = void 0, a = void 0; n < e.length; n++) {
          if (55295 < (i = e.charCodeAt(n)) && i < 57344) {
              if (!a) {
                  56319 < i || n + 1 === e.length ? (t[r++] = 239,
                  t[r++] = 191,
                  t[r++] = 189) : a = i;
                  continue
              }
              if (i < 56320) {
                  t[r++] = 239,
                  t[r++] = 191,
                  t[r++] = 189,
                  a = i;
                  continue
              }
              i = a - 55296 << 10 | i - 56320 | 65536,
              a = null
          } else
              a && (t[r++] = 239,
              t[r++] = 191,
              t[r++] = 189,
              a = null);
          i < 128 ? t[r++] = i : (i < 2048 ? t[r++] = i >> 6 | 192 : (i < 65536 ? t[r++] = i >> 12 | 224 : (t[r++] = i >> 18 | 240,
          t[r++] = i >> 12 & 63 | 128),
          t[r++] = i >> 6 & 63 | 128),
          t[r++] = 63 & i | 128)
      }
      return r
  }
  var StyleOptionsBuilding = function() {
      this.hideWithoutStyle = !1,
      this.areas = []
  }
    , VectorTileSegements = (ewa.prototype.add = function(t, e, r, n, i) {
      VTLineSegement.getKey(t, e, i, n) !== (this.WM ? this.WM.getKey() : "-1") && (this.VM += this.WM ? this.WM.length : 0,
      this.WM = new VTLineSegement(t,e,this.VM,n,i),
      this.jc.push(this.WM)),
      this.WM.add(r)
  }
  ,
  ewa);
  function ewa() {
      this.jc = [],
      this.VM = 0
  }
  var VTLineSegement = (mwa.getKey = function(t, e, r, n) {
      return t + ":" + e + ":" + r + ":" + n
  }
  ,
  mwa.prototype.add = function(t) {
      this.length += t
  }
  ,
  mwa.prototype.getKey = function() {
      return this.mainkey + ":" + this.subkey + ":" + this.maxzoom + ":" + this.minzoom
  }
  ,
  mwa);
  function mwa(t, e, r, n, i) {
      this.mainkey = t,
      this.subkey = e,
      this.offset = r,
      this.minzoom = n,
      this.maxzoom = i,
      this.length = 0
  }
  var MapboxSegements = (xwa.prototype.add = function(t, e) {
      MBLineSegement.getKey(t),
      this.WM && this.WM.getKey(),
      this.GM = t,
      this.VM += this.WM ? this.WM.length : 0,
      this.WM = new MBLineSegement(t,this.VM),
      this.jc.push(this.WM),
      this.WM.add(e)
  }
  ,
  xwa);
  function xwa() {
      this.jc = [],
      this.GM = -1,
      this.HM = -1,
      this.VM = 0
  }
  var MBLineSegement = (Cwa.getKey = function(t) {
      return "" + t
  }
  ,
  Cwa.prototype.add = function(t) {
      this.length += t
  }
  ,
  Cwa.prototype.getKey = function() {
      return "" + this.style
  }
  ,
  Cwa), ImageDataWraperType, Hwa;
  function Cwa(t, e) {
      this.style = t,
      this.offset = e,
      this.length = 0
  }
  Hwa = ImageDataWraperType = ImageDataWraperType || {},
  Hwa.base64 = "base64",
  Hwa.arraybuffer = "arraybuffer",
  Hwa.bitmap = "bitmap",
  Hwa.empty = "empty";
  var ImageDataWraper = (Iwa.AV = function(t) {
      return createImageBitmap(new Blob([new Uint8Array(t)]))
  }
  ,
  Iwa.Wb = function(t) {
      var e = {
          data: t.data,
          type: t.type,
          status: t.status,
          IV: t.IV,
          hash: t.hash
      };
      return t.transform(),
      e
  }
  ,
  Iwa.prototype.transform = function() {
      this.IV = !0,
      this.type === ImageDataWraperType.bitmap && (this.data = "")
  }
  ,
  Iwa.prototype.destroy = function() {
      "destroyed" !== this.status && (this.type === ImageDataWraperType.arraybuffer && URLObject.revokeObjectURL(this.data),
      this.data = "",
      this.status = "destroyed")
  }
  ,
  Iwa.prototype.IZ = function(t) {
      var e;
      this.type === ImageDataWraperType.bitmap ? t(this.data) : ((e = new Image).crossOrigin = "",
      e.onload = function() {
          t(e)
      }
      ,
      e.src = this.data)
  }
  ,
  Iwa);
  function Iwa(t, e, r) {
      this.hash = t,
      this.IV = !1,
      "string" != typeof e ? r && r.imageBitmap ? (this.type = ImageDataWraperType.bitmap,
      this.status = "success",
      this.data = e) : (r = new Blob([e],{
          type: "image/png"
      }),
      (r = URLObject.createObjectURL(r)) ? (this.data = r,
      this.type = ImageDataWraperType.arraybuffer,
      this.status = "success") : (this.data = "",
      this.type = ImageDataWraperType.arraybuffer,
      this.status = "error")) : (this.data = e,
      this.type = ImageDataWraperType.base64,
      this.status = "success")
  }
  var EmptyImageDataWraper = new ImageDataWraper("","");
  EmptyImageDataWraper.type = ImageDataWraperType.empty;
  var CircleBucket = (Twa.prototype.wb = function(t, e) {
      var r = this._b.length;
      return this._b.kb(t[0], t[1], e),
      this._b.length - r
  }
  ,
  Twa.prototype.upload = function(t) {
      this.uploaded || (this.destroy(),
      this.uploaded = !0,
      this.zs = t.fe(this._b.Mb, SymbolArray.Rb))
  }
  ,
  Twa.prototype.destroy = function() {
      this.uploaded = !1,
      this.zs && this.zs.context && (this.zs.context.deleteBuffer(this.zs),
      delete this.zs)
  }
  ,
  Twa.prototype.reset = function() {
      this._b = new SymbolArray,
      this.uploaded = !1
  }
  ,
  Twa);
  function Twa() {
      this._b = new SymbolArray,
      this.uploaded = !1
  }
  var SimpleCircleBucket = (Zwa.prototype.wb = function(t) {
      var e = this._b.length;
      return this._b.kb(t[0], t[1]),
      this._b.length - e
  }
  ,
  Zwa.prototype.upload = function(t) {
      this.uploaded || (this.destroy(),
      this.uploaded = !0,
      this.zs = t.fe(this._b.Mb, SimpleSymbolArray.Rb))
  }
  ,
  Zwa.prototype.destroy = function() {
      this.uploaded = !1,
      this.zs && this.zs.context && (this.zs.context.deleteBuffer(this.zs),
      delete this.zs)
  }
  ,
  Zwa.prototype.reset = function() {
      this._b = new SimpleSymbolArray,
      this.uploaded = !1
  }
  ,
  Zwa);
  function Zwa() {
      this._b = new SimpleSymbolArray,
      this.uploaded = !1
  }
  var DistrictLayerStyle = function() {
      this["stroke-width"] = "",
      this["coastline-stroke"] = "",
      this["nation-stroke"] = "",
      this["province-stroke"] = "",
      this["city-stroke"] = "",
      this["county-stroke"] = "",
      this.fill = ""
  }
    , registry = {};
  function register(t, e, r) {
      void 0 === r && (r = {}),
      Object.defineProperty(e, "yk", {
          value: t,
          writable: !1
      }),
      registry[t] = {
          mk: e,
          gk: r.gk || [],
          wk: r.wk || []
      }
  }
  function serialize(t, e) {
      if (null == t || "boolean" == typeof t || "number" == typeof t || "string" == typeof t || t instanceof Boolean || t instanceof Number || t instanceof String || t instanceof Date || t instanceof RegExp)
          return t;
      if (t instanceof ArrayBuffer)
          return e && e.push(t),
          t;
      if (Browser.imageBitmap && t instanceof ImageBitmap)
          return e && e.indexOf(t) < 0 && e.push(t),
          t;
      if (ArrayBuffer.isView(t)) {
          var r = t;
          return e && e.push(r.buffer),
          r
      }
      if (t instanceof ImageData)
          return e && e.push(t.data.buffer),
          t;
      if (Array.isArray(t)) {
          for (var n = [], i = 0, a = t; i < a.length; i++) {
              var o = a[i];
              n.push(serialize(o, e))
          }
          return n
      }
      if ("object" != typeof t)
          throw new Error("can't serialize object of type " + typeof t);
      var s = (r = t.constructor).yk;
      if (!s)
          throw new Error("can't serialize object of unregistered class");
      var u, c = void 0;
      if (r.Wb)
          c = r.Wb(t, e);
      else {
          for (var f in c = {},
          t)
              t.hasOwnProperty(f) && (0 <= registry[s].gk.indexOf(f) || (u = t[f],
              c[f] = 0 <= registry[s].wk.indexOf(f) ? u : serialize(u, e)));
          t instanceof Error && (c.message = t.message)
      }
      if (c.$name)
          throw new Error("$name property is reserved for worker serialization logic.");
      return "Object" !== s && (c.$name = s),
      c
  }
  function deserialize(t) {
      if (null == t || "boolean" == typeof t || "number" == typeof t || "string" == typeof t || t instanceof Boolean || t instanceof Number || t instanceof String || t instanceof Date || t instanceof RegExp || t instanceof ArrayBuffer || ArrayBuffer.isView(t) || t instanceof ImageData || Browser.imageBitmap && t instanceof ImageBitmap)
          return t;
      if (Array.isArray(t))
          return map(t, deserialize);
      if ("object" != typeof t)
          throw new Error("can't deserialize object of type " + typeof t);
      var e = t.$name || "Object"
        , r = registry[e].mk;
      if (!r)
          throw new Error("can't deserialize unregistered class " + e);
      if (r.Gb)
          return r.Gb(t);
      for (var n = Object.create(r.prototype), i = 0, a = Object.keys(t); i < a.length; i++) {
          var o, s = a[i];
          "$name" !== s && (o = t[s],
          n[s] = 0 <= registry[e].wk.indexOf(s) ? o : deserialize(o))
      }
      return n
  }
  register("Object", Object),
  register("LineArrayBuffer", LineArrayBuffer),
  register("TriangleIndexArray", TriangleIndexArray),
  register("TriangleIndexArrayUint", TriangleIndexArrayUint),
  register("PolylineBucket", PolylineBucket),
  register("LinesIndexArray", LinesIndexArray),
  register("LinesIndexArrayUint", LinesIndexArrayUint),
  register("FillArray", FillArray),
  register("PolygonBucket", PolygonBucket),
  register("CircleBucket", CircleBucket),
  register("SymbolArray", SymbolArray),
  register("FillExtrusionBucket", FillExtrusionBucket),
  register("FillExtrusionArray", FillExtrusionArray),
  register("SmartArrayBuffer", SmartArrayBuffer),
  register("Color", Color),
  register("Segements", NebulaSegements),
  register("VectorTileSegements", VectorTileSegements),
  register("VTLineSegement", VTLineSegement),
  register("LineSegement", LineSegement),
  register("PolygonSegements", PolygonSegements),
  register("VectorTile", VectorTile$1),
  register("VectorTileLayer", VectorTileLayer),
  register("VectorTileFeature", VectorTileFeature),
  register("Pbf", Pbf),
  register("StyleOptionsBuilding", StyleOptionsBuilding),
  register("DistrictStyleOptions", DistrictLayerStyle),
  register("MapboxSegements", MapboxSegements),
  register("MBLineSegement", MBLineSegement),
  register("ImageDataWraper", ImageDataWraper),
  register("TileCoord", TileCoord),
  register("Tile", Tile),
  register("StyleParser", StyleParser);
  var LabelTextStyle = (zxa.BV = function(t, e) {
      var r = DangerousFontSize
        , i = void 0 === (n = t.fontSize) ? 12 : n
        , a = t.fillColor
        , o = t.strokeColor
        , u = void 0 === (s = t.strokeWidth) ? 0 : s
        , f = void 0 === (c = t.backgroundColor) ? 0 : c
        , n = t.borderColor
        , s = labelsUtil.Yj(Util.color2RgbaArray(s = void 0 === a ? [0, 0, 0, 1] : a))
        , f = f ? labelsUtil.Yj(Util.color2RgbaArray(f)) : [0, 0, 0, 0]
        , o = labelsUtil.Yj(Util.color2RgbaArray(o), [.988, .988, .988, 1])
        , n = labelsUtil.Yj(Util.color2RgbaArray(n), [.988, .988, .988, 1])
        , c = (i = i || 12) < 10 ? .78125 : 205 / 256
        , t = 0
        , a = 0;
      return u && (a = c * (1 - (u = 10 < u * e ? 10 : u) / 10.1)),
      t = 1.4142 * (t = r < i || 1 < e ? 1.7 : 1.5) / i,
      c += 1.5 / 256 * (e - 1),
      (e = new Float32Array(28)).set(s, 0),
      e.set(o, 4),
      e[8] = t,
      e[9] = a,
      e[10] = c,
      e.set(f, 11),
      e.set(n, 15),
      e[19] = 1,
      e.set(s, 20),
      e.set(o, 24),
      e
  }
  ,
  zxa.prototype.GV = function(t) {
      switch (t) {
      case "fillColor":
          return this.origin.slice(0, 4);
      case "strokeColor":
          return this.origin.slice(4, 8);
      case "backgroundColor":
          return this.origin.slice(11, 15);
      case "borderColor":
          return this.origin.slice(15, 19);
      case "u_gamma":
          return this.origin[8];
      case "u_borderBuffer":
          return this.origin[9];
      case "u_buffer":
          return this.origin[10];
      case "u_fontSizeFactor":
          return this.origin[19];
      case "u_highlightFillColor":
          return this.origin.slice(20, 24);
      case "u_highlightStrokeColor":
          return this.origin.slice(24, 28);
      default:
          return
      }
  }
  ,
  zxa.prototype.VV = function(t, e) {
      switch (t) {
      case "u_fontSizeFactor":
          this.origin[19] = e;
          break;
      case "fillColor":
          this.origin.set(e, 0);
          break;
      case "strokeColor":
          this.origin.set(e, 4);
          break;
      case "backgroundColor":
          this.origin.set(e, 11);
          break;
      case "borderColor":
          this.origin.set(e, 8);
          break;
      case "u_highlightFillColor":
          this.origin.set(e, 20);
          break;
      case "u_highlightStrokeColor":
          this.origin.set(e, 24)
      }
  }
  ,
  zxa);
  function zxa(t) {
      this.origin = t
  }
  register("LabelTextStyle", LabelTextStyle);
  var angle$1 = 0
    , LabelBucket = (Wxa.prototype.rQ = function(t, e) {
      var n = void 0 === (r = e.from) ? "inner" : r
        , i = CONSTS.ud;
      labelsUtil.zj(this, t),
      this.iO = n;
      var r = this.Mf && "SDFManagerBase" !== this.Mf.CLASS_NAME
        , a = this.DO;
      r && (a.rp = new Float32Array(this.$j * i * 6));
      var o = this.Gj
        , s = this.Hj
        , u = this.Vj;
      if (!s || !u)
          return null;
      var t = assign(this.options, e)
        , n = this.RO(o)
        , c = isUndefined(t.opacity) ? 1 : t.opacity;
      if (r) {
          for (var f, l = 0, h = 0, d = 0, v = n; d < v.length; d++) {
              for (var g = v[d], b = void 0, p = 0, m = g; p < m.length && !((b = s[m[p]]) && b.text && b.text.style); p++)
                  ;
              var y = {
                  vd: []
              }
                , T = this.ym().KO;
              b && b.text && b.text.style ? (x = b.text.style || {},
              y.vd = new LabelTextStyle(LabelTextStyle.BV(x, void 0 === T ? 1 : T))) : (y.vd = new LabelTextStyle(new Float32Array(28)),
              y.vd.VV("u_fontSizeFactor", 1)),
              f = h,
              y.start = f;
              var T = isUndefined(T = (x = o[g[0]].opts || {}).opacity) ? 1 : T
                , x = x.icon && x.icon[0] && x.icon[0].image;
              y.opacity = T,
              y.opacity *= c,
              a.pp.push(y),
              y.dp = [];
              for (var w = 0, A = g; w < A.length; w++) {
                  var M = A[w]
                    , S = o[M].CO || []
                    , P = {
                      height: o[M] && o[M].opts.height || 0,
                      from: e.from
                  }
                    , I = this.PO(M, u[M], s[M], a, P)
                    , $ = this.zV(M, u[M], s[M], o[M], a, P, S)
                    , S = this.BO(M, u[M], s[M], o[M], a, S, P);
                  y.dp.push({
                      id: M,
                      Rd: S,
                      icon: I,
                      bg: $,
                      kd: P = 6 * (S + I + $)
                  }),
                  h += P * i
              }
              y.end = h,
              y.pd = x,
              l += x = h - f,
              a.bd.push(x)
          }
          a.up = l
      }
      return a.Fz = n,
      this.DO = a
  }
  ,
  Wxa.prototype.destroy = function() {}
  ,
  Wxa.prototype.ym = function() {
      return this.gs.aO()
  }
  ,
  Wxa.prototype.zO = function(t) {
      if (!t)
          return [];
      var e = this.qO;
      return e[t] || (e = labelsUtil.Kj(parseInt(t, 10)),
      this.qO[t] = e,
      this.qO[t])
  }
  ,
  Wxa.prototype.RO = function(t) {
      var e, r, n, i, a, o, s, u = {}, c = this.Gj, f = this.iO;
      for (e in t)
          t.hasOwnProperty(e) && (i = (r = c[e]).data || {},
          o = (s = r.opts || {}).zIndex,
          a = s.forceShow,
          v = i.rank,
          v = a ? v - 1e5 : v,
          n = isUndefined(s.opacity) ? 1 : s.opacity,
          s = void 0 === (a = (i = this.Hj[e] || {}).text) ? {} : a,
          a = i.icon,
          u[i = ("labelsLayer" === f ? o || v : o) || 1] = u[i] || {},
          o = s && s.style || "",
          s = void 0,
          "labelsLayer" === f ? (s = o ? labelGroup.nT(o) + n : s,
          s += a && a[0] && a[0].image ? a[0].image : "") : s = r.data.extData.Lp ? (r.data.extData.Lp << 16) + r.data.extData.Ap : o ? labelGroup.nT(o) + n : "-1-" + n,
          u[i][s] || (u[i][s] = []),
          u[i][s].push(e));
      for (var l = [], h = 0, d = labelsUtil.rank(Object.keys(u)); h < d.length; h++)
          for (var v, g = u[v = d[h]], b = 0, p = Object.keys(g).sort(); b < p.length; b++) {
              var m = p[b];
              l.push(g[m])
          }
      return l
  }
  ,
  Wxa.prototype.WO = function(t, e) {
      var r = Util.WorldAxesCenter;
      return [t - r.x, e - r.y]
  }
  ,
  Wxa.prototype.GO = function(t) {
      return t
  }
  ,
  Wxa.prototype.HO = function(t, e, r, n, i) {
      var a = i.VO
        , s = void 0 === (o = i.type) ? EnumLabelFragType.icon : o
        , u = i.zooms
        , c = i.height
        , l = void 0 === (f = e.icon) ? [] : f
        , h = CONSTS.ud
        , d = this.$O
        , v = 0
        , g = 0;
      (b = this.ac.getImage(r.image)) && (v = b.startX || 0,
      g = b.startY || 0);
      var p, m, y = a[0], T = a[1], x = u[0], w = u[1], A = exports.cY.icon, o = l.anchorOffset, i = r.size, e = r.clipSize, f = r.clipOrigin, b = i[0], a = i[1], u = e[0], l = e[1], i = f[0], e = f[1], o = (f = this.GO(o))[0] || 0, f = f[1] || 0;
      (r = r.offset) && (m = r instanceof Array || void 0 === r.x || void 0 === r.y ? (p = r[0],
      r[1]) : (p = r.x,
      r.y)),
      void 0 !== p && (o += p),
      void 0 !== m && (f += m),
      n.set([o, f, i = v + i, e = g + e, y, T, A, s, x, w, c, angle$1, 0, o + b, f, i + u, e, y, T, A, s, x, w, c, angle$1, 0, o, a + f, i, e + l, y, T, A, s, x, w, c, angle$1, 0, o + b, f, i + u, e, y, T, A, s, x, w, c, angle$1, 0, o + b, a + f, i + u, e + l, y, T, A, s, x, w, c, angle$1, 0, o, a + f, i, e + l, y, T, A, s, x, w, c, angle$1, 0], d),
      this.$O += 6 * h
  }
  ,
  Wxa.prototype.PO = function(t, e, r, n, i) {
      if (!e || !r)
          return 0;
      var a = e.icon
        , s = void 0 === (o = r.icon) ? [] : o;
      if (!s.length || !s[0].image)
          return 0;
      for (var o = (r = (void 0 === a ? {} : a).origin)[0], a = r[1], u = (r[2],
      this.WO(o, a)), c = i.height, f = 0, l = s; f < l.length; f++) {
          var h = l[f];
          this.HO(t, e, h, n.rp, {
              VO: u,
              zooms: h.zooms,
              height: c
          }),
          delete h.clipOrigin,
          delete h.clipSize,
          delete h.size,
          delete h.image,
          delete h.type,
          delete h.anchor,
          delete h.retina
      }
      return s.length
  }
  ,
  Wxa.prototype.YO = function(t, e, r, n, i) {
      var a = i.VO
        , s = void 0 === (o = i.type) ? EnumLabelFragType.bg : o
        , u = i.zooms
        , c = i.height
        , f = CONSTS.ud
        , l = CONSTS.Kp
        , h = this.$O
        , d = e.padding
        , v = a[0]
        , o = a[1]
        , i = u[0]
        , e = u[1]
        , a = d.w
        , u = d.h
        , l = d.offsetX - l.buffer
        , d = d.offsetY;
      if (n.set([l, d, 0, 0, v, o, 0, s, i, e, c, angle$1, 0, l + a, d, 0, 0, v, o, 0, s, i, e, c, angle$1, 0, l, u + d, 0, 0, v, o, 0, s, i, e, c, angle$1, 0, l + a, d, 0, 0, v, o, 0, s, i, e, c, angle$1, 0, l + a, u + d, 0, 0, v, o, 0, s, i, e, c, angle$1, 0, l, u + d, 0, 0, v, o, 0, s, i, e, c, angle$1, 0], h),
      this.$O += 6 * f,
      h = this.$O,
      r = r.text.style.borderWidth) {
          for (var g = [l, d, a, u, v, o, r, i, e, c, angle$1], b = 0; b < 4; b++)
              g[11] = b,
              this.sT(g, n, h),
              h += 6 * f;
          this.$O = h
      }
  }
  ,
  Wxa.prototype.sT = function(t, e, r) {
      var n = (t = void 0 === t ? {} : t)[0]
        , i = t[1]
        , a = t[2]
        , o = t[3]
        , s = t[4]
        , u = t[5]
        , c = t[6]
        , f = t[7]
        , l = t[8]
        , h = t[9]
        , d = t[10]
        , v = t[11]
        , t = EnumLabelFragType.tq
        , g = 0
        , b = 0
        , p = 0
        , m = 0
        , y = 0
        , T = 0
        , x = 0
        , w = 0;
      switch (v) {
      case 0:
          m = b = i - c,
          y = g = n + 0,
          x = p = n + a,
          w = T = i + 0;
          break;
      case 1:
          p = (g = n + a) + c,
          m = b = i - c,
          x = (y = n + a) + c,
          w = T = i + o + c;
          break;
      case 2:
          y = g = n + 0,
          x = p = n + a,
          w = T = (m = b = i + o) + c;
          break;
      case 3:
          g = n - c,
          m = b = i - c,
          y = (p = n) - c,
          x = n,
          w = T = i + o + c
      }
      e.set([g, b, 0, 0, s, u, 0, t, f, l, h, d, 0, p, m, 0, 0, s, u, 0, t, f, l, h, d, 0, y, T, 0, 0, s, u, 0, t, f, l, h, d, 0, p, m, 0, 0, s, u, 0, t, f, l, h, d, 0, y, T, 0, 0, s, u, 0, t, f, l, h, d, 0, x, w, 0, 0, s, u, 0, t, f, l, h, d, 0], r)
  }
  ,
  Wxa.prototype.UO = function(t, e, r, n, i) {
      if (!e || !r)
          return 0;
      var a = CONSTS.Mp
        , o = CONSTS.Rp
        , s = e.text
        , u = (r.text || {}).zooms;
      if (!r.text || !s.origin)
          return 0;
      var c = s.origin
        , f = c[0]
        , s = c[1]
        , i = (c[2],
      i.height);
      return this.YO(t, e, r, n.rp, {
          VO: [f, s],
          zooms: void 0 === u ? [a, o] : u,
          height: i
      }),
      i = 1,
      r.text.style.borderWidth && (i += 4),
      i
  }
  ,
  Wxa.prototype.zV = function(t, e, r, n, i, a, o) {
      if (!e || !r)
          return 0;
      var s = CONSTS.Mp
        , u = CONSTS.Rp
        , c = r
        , f = e.text.offset
        , d = void 0 === (h = (l = c.text || {}).style) ? {} : h
        , h = void 0 === (h = (l.type,
      l.direction)) ? "left" : h
        , s = void 0 === (l = l.zooms) ? [s, u] : l;
      if (!c.text || !c.text.style)
          return 0;
      if (o.length,
      u = !1 === d.fold ? 100 : 6,
      l = this.Mf.lineBreak(c.text.txt, {
          fontSize: d.fontSize,
          CO: n.CO,
          type: n.data && n.data.BG || "ch",
          fj: u,
          from: a.from
      }),
      o = {
          direction: h,
          size: d.fontSize,
          yO: c.icon.length && c.icon[0].image
      },
      c = (u = (n = e.text).origin)[0],
      e = u[1],
      u[2],
      !r.text || !n.origin)
          return 0;
      var u = [c, e]
        , n = a.height
        , c = EnumLabelFragType.bg
        , v = CONSTS.ud
        , g = this.$O
        , e = u[0]
        , a = u[1]
        , u = s[0]
        , s = s[1]
        , b = i.rp
        , i = l.maxWidth + 6
        , l = d.fontSize * l.width.length + 8
        , o = this.XV(i, h, o.yO)
        , o = f[0] + o[0] - 1
        , f = f[1] - 2;
      if (b.set([o, f, 0, 0, e, a, 0, c, u, s, n, angle$1, 0, o + i, f, 0, 0, e, a, 0, c, u, s, n, angle$1, 0, o, l + f, 0, 0, e, a, 0, c, u, s, n, angle$1, 0, o + i, f, 0, 0, e, a, 0, c, u, s, n, angle$1, 0, o + i, l + f, 0, 0, e, a, 0, c, u, s, n, angle$1, 0, o, l + f, 0, 0, e, a, 0, c, u, s, n, angle$1, 0], g),
      this.$O += 6 * v,
      g = this.$O,
      r = r.text.style.borderWidth) {
          for (var p = [o, f, i, l, e, a, r, u, s, n, angle$1], m = 0; m < 4; m++)
              p[11] = m,
              this.sT(p, b, g),
              g += 6 * v;
          return this.$O = g,
          5
      }
      return 1
  }
  ,
  Wxa.prototype.CT = function(t, e) {
      return this.Mf ? this.Mf.measureText(t, e) : this.NT ? (this.NT.font = (e || 12) + "px",
      this.NT.measureText(t.join("")).width) : 0
  }
  ,
  Wxa.prototype.XO = function(t, e) {
      var r = CONSTS.JM
        , r = void 0 === (n = (e = void 0 === e ? {} : e).direction) ? r.LEFT : n
        , n = e.size
        , e = void 0 !== (e = e.yO) && e
        , n = this.CT(t = void 0 === t ? [] : t, void 0 === n ? DangerousFontSize : n);
      return this.XV(n, r, e)
  }
  ,
  Wxa.prototype.XV = function(t, e, r) {
      void 0 === r && (r = !1);
      var n = 0
        , i = 0;
      switch (e) {
      case (r = CONSTS.JM).LEFT:
          n = -t,
          i = 0;
          break;
      case r.QM:
          i = n = 0;
          break;
      case r.ZM:
      case r.tj:
          n = -t / 2,
          i = 0;
          break;
      case r.ij:
      case r.nj:
          n = -t / 2,
          i = 0;
          break;
      default:
          i = n = 0
      }
      return [n, i]
  }
  ,
  Wxa.prototype.JO = function(t, e, r, n) {
      var i, a, o, s, u, c, f, l, h, d, v, g = CONSTS.ud, b = this.$O, p = n.size, m = n.VO, y = n.type, T = void 0 === y ? EnumLabelFragType.text : y, x = (n.id,
      n.zooms), w = n.height, A = CONSTS.Kp, M = this.Mf.mz(e);
      M && (i = M.index,
      a = M.pos,
      o = M.char,
      s = m[0],
      u = m[1],
      c = x[0],
      f = x[1],
      o || (console.log("!metric", e, String.fromCharCode(e)),
      o = this.Mf.mz(32).char),
      l = p / A.size,
      h = o[0],
      d = o[1],
      o[2],
      o[3],
      o[4],
      v = o[5],
      y = o[6],
      n = A.buffer,
      0 < h && 0 < d && (m = +((M = r.x) + ((h += 2 * n) - n) * l),
      e = +((x = r.y) + ((d += 2 * n) + y) * l),
      A = p = 0,
      v = (p += a.startX) + v,
      A = (A += a.startY) + y,
      t.set([n = M - n * l, y = +(x + y * l), v, A, s, u, i, T, c, f, w, angle$1, 0, m, y, v + h, A, s, u, i, T, c, f, w, angle$1, 0, n, e, v, A + d, s, u, i, T, c, f, w, angle$1, 0, n, e, v, A + d, s, u, i, T, c, f, w, angle$1, 0, m, y, v + h, A, s, u, i, T, c, f, w, angle$1, 0, m, e, v + h, A + d, s, u, i, T, c, f, w, angle$1, 0], b),
      this.$O += 6 * g),
      r.x = r.x + (o[0] + CONSTS.ic) * l)
  }
  ,
  Wxa.prototype.BO = function(t, e, r, n, i, a, o) {
      if (!(e && r && r.text && r.text.txt))
          return 0;
      var s = CONSTS.Mp
        , u = CONSTS.Rp
        , c = r
        , l = (f = e.text).origin
        , h = f.offset
        , f = void 0 === (e = (r = c.text || {}).style) ? {} : e
        , e = void 0 === (e = (r.type,
      r.direction)) ? "left" : e
        , d = void 0 === (r = r.zooms) ? [s, u] : r
        , v = a
        , r = l[0]
        , a = l[1];
      if (l[2],
      !c.text || !c.text.style)
          return 0;
      for (var g = v.length, b = g, l = !1 === f.fold ? 100 : 6, p = ((l = this.Mf.lineBreak(c.text.txt, {
          fontSize: f.fontSize,
          CO: (n = void 0 === n ? {} : n).CO,
          type: n.data && n.data.BG || "ch",
          fj: l,
          from: o.from
      })).lines.length,
      l.oQ), m = f.fontSize, y = {
          direction: e,
          size: m,
          yO: c.icon.length && c.icon[0].image
      }, T = [r, a], x = {
          x: 0,
          y: 0
      }, w = o.height, A = -1, M = 0, S = 0; S < g; S++) {
          var P = v[S]
            , I = this.eQ(p, M);
          M += P.split("|").length;
          var $ = this.nQ(v, p[I], p[I + 1])
            , $ = v.slice.apply(v, $)
            , $ = this.XO($, y)
            , $ = vector.add(h, $);
          if (0 === I && 0 === S && (x.x = $[0],
          x.y = $[1]),
          I && (x.y = $[1] + (m + 3) * I,
          A !== I)) {
              if ("32" === P) {
                  b--;
                  continue
              }
              x.x = $[0]
          }
          A = I,
          this.JO(i.rp, P, x, {
              size: m,
              VO: T,
              id: t,
              zooms: d,
              height: w
          })
      }
      return b
  }
  ,
  Wxa.prototype.nQ = function(t, e, r) {
      for (var n = 0, i = 0, a = 0, o = t.length, s = 0; s < o; s++) {
          for (var u = t[s].split("|").length, c = 0; c < u; c++) {
              var f = a + c;
              f === e && (n = s),
              f === r && (i = s)
          }
          a += u
      }
      return [n, i = a <= r ? o : i]
  }
  ,
  Wxa.prototype.eQ = function(t, e) {
      for (var r = (t = void 0 === t ? [] : t).length, n = 0; n < r - 1; n++)
          if (e >= t[n] && e < t[n + 1])
              return n;
      return 0
  }
  ,
  Wxa);
  function Wxa(t) {
      this.DO = {
          rp: [],
          pp: [],
          bd: [],
          up: 0
      },
      this.ZO = [],
      this.options = {},
      this.Gj = {},
      this.Hj = {},
      this.Vj = {},
      this.QO = {},
      this.tI = {},
      this.Fs = {},
      this.$j = 0,
      this.qO = {},
      this.$O = 0,
      this.rI = {},
      this.iO = "inner",
      this._id = Util.stamp(this),
      this.Mf = t.R_,
      this.ac = t.z_,
      this.io = t.canvas,
      this.NT = t.Nz
  }
  var DefaultLabelsLayerOpts = {
      opacity: 1,
      collision: !0,
      animation: !0
  }
    , Labels = (bFa.prototype.Ns = function(t, e) {
      var r = (e = void 0 === e ? {} : e).zoom
        , n = e.center
        , i = e.from;
      return this.nI = t,
      this.iI = !0,
      this.iO = i,
      this.eI.zoom = r || 20,
      this.oI(),
      this.hu = n,
      this.uI(e)
  }
  ,
  bFa.prototype.aO = function() {
      return this.eI
  }
  ,
  bFa.prototype.zL = function(t) {
      return this.Wj[t]
  }
  ,
  bFa.prototype.uI = function(t) {
      var e = this.iO
        , e = {
          center: this.hu,
          from: e
      };
      if (assign(e, t = void 0 === t ? {} : t),
      this.sI.nO(this, e),
      this.$j = this.sI.$j,
      t = this.fI.rQ(this, e)) {
          var r = {}
            , n = {}
            , e = t.Fz || {};
          delete t.Fz;
          var i, a, o, s, u, c, f, l = this.Gj;
          if ("inner" !== this.iO)
              return {
                  Nf: l,
                  style: this.Hj,
                  coords: this.Vj,
                  rp: t,
                  zp: this.zp,
                  Fz: e
              };
          for (i in l)
              l.hasOwnProperty(i) && (a = l[i],
              o = this.Vj[i],
              s = (f = a.data).extData,
              u = f.position,
              c = f.name,
              f = f.rank,
              r[i] = {
                  data: {
                      position: u,
                      name: c,
                      rank: f,
                      extData: {
                          type: s.type,
                          id: s.id,
                          Lp: s.Lp,
                          Ap: s.Ap,
                          bz: s.bz
                      }
                  }
              },
              n[i] = {
                  origin: o.origin,
                  icon: {
                      anchorOffset: o.icon.anchorOffset,
                      size: o.icon.size
                  },
                  padding: o.padding
              },
              a.opts && (r[i].opts = {
                  zooms: a.opts.zooms
              }));
          return {
              Nf: r,
              style: this.Hj,
              coords: n,
              rp: t,
              zp: this.zp,
              Fz: e
          }
      }
  }
  ,
  bFa.prototype.oI = function() {
      for (var t = this.nI, e = this.Gj || {}, r = this.Wj, n = this.zp, i = CONSTS.Mp, a = CONSTS.Rp, o = CONSTS.Pp, s = CONSTS.jp, u = 0, c = t; u < c.length; u++) {
          var f = c[u]
            , l = f.data.id
            , h = f.opts && f.opts.zooms || []
            , d = void 0 === (d = h[0]) ? i : d
            , v = void 0 === (h = h[1]) ? a : h
            , g = isUndefined(r[l]) ? Util.stamp(this) : r[l];
          l && (r[l] = g);
          for (var b = Math.ceil(d - o); b <= v + s; )
              n[b] || (n[b] = []),
              n[b].push(g),
              b++;
          e[g] = f,
          e[g].CO = this.Ws(f),
          this.hI(f)
      }
      if ("undefined" != typeof Uint32Array)
          for (var p in n)
              n.hasOwnProperty(p) && (n[p] = new Uint32Array(n[p]));
      this.Gj = e
  }
  ,
  bFa.prototype.hI = function(t) {
      var e = this.Fs;
      (t = (t = t.opts.icon) && t.image || "") && (e[t] = 1)
  }
  ,
  bFa.prototype.Ws = function(t) {
      this.Es;
      var e = t.data.txt || ""
        , t = (t.opts && t.opts.text || {}).$G || []
        , t = labelsUtil.EQ(e, t);
      return labelsUtil.aQ(t)
  }
  ,
  bFa);
  function bFa(t) {
      if (this.CLASS_NAME = "AMap.LabelsLayer",
      this.Gj = {},
      this.Hj = {},
      this.Vj = {},
      this.Fs = {},
      this.Es = {},
      this.Wj = {},
      this.$j = 0,
      this.zp = {},
      this.render = null,
      this.eI = {},
      this.nI = [],
      this.cI = !1,
      this.iI = !1,
      this.iO = "",
      this.cI = !1,
      this._opts = assign({}, DefaultLabelsLayerOpts, {
          opacity: t.opacity
      }),
      this.Mf = t.R_,
      this.ac = t.z_,
      this.PN = t.info || {},
      !this.Mf || "SDFManagerBase" === this.Mf.CLASS_NAME)
          try {
              var e = this.io = document.createElement("canvas")
                , r = void 0;
              e && (r = this.NT = e.getContext("2d")),
              t.canvas = e,
              t.Nz = r
          } catch (t) {
              console.log("canvas 初始化失败")
          }
      this.sI = new LabelPlacement(t),
      this.fI = new LabelBucket(t)
  }
  var DynamicVerticeStyle = function() {}
    , DynamicVertice = (lGa.Wb = function(t, e) {
      var r = {
          zo: t.zo,
          coords: t.coords,
          Nf: t.Nf,
          style: t.style
      };
      return {
          JSON: JSON.stringify(r),
          kV: {
              rp: serialize(t.rp, e),
              zp: serialize(t.zp, e)
          }
      }
  }
  ,
  lGa.Gb = function(t) {
      var e = JSON.parse(t.JSON);
      return t.kV.rp.pp = deserialize(t.kV.rp.pp),
      e.rp = t.kV.rp,
      e.zp = t.kV.zp,
      new lGa(e.zo,e)
  }
  ,
  lGa.prototype.upload = function(t) {
      this.buffer || (this.buffer = t.fe(this.rp.rp, CONSTS.sp))
  }
  ,
  lGa.prototype.destroy = function() {
      this.buffer && (this.buffer.context.deleteBuffer(this.buffer),
      delete this.buffer)
  }
  ,
  lGa);
  function lGa(t, e) {
      this.zo = t,
      this.Nf = e.Nf,
      this.style = e.style,
      Object.setPrototypeOf(this.style, new DynamicVerticeStyle),
      this.coords = e.coords,
      this.rp = e.rp,
      this.zp = e.zp
  }
  register("DynamicVertice", DynamicVertice);
  var lineclip_1 = lineclip;
  function lineclip(t, e, r) {
      var n, i, a, o, s, u = t.length, c = bitCode(t[0], e), f = [];
      for (r = r || [],
      n = 1; n < u; n++) {
          for (i = t[n - 1],
          o = s = bitCode(a = t[n], e); ; ) {
              if (!(c | o)) {
                  f.push(i),
                  o !== s ? (f.push(a),
                  n < u - 1 && (r.push(f),
                  f = [])) : n === u - 1 && f.push(a);
                  break
              }
              if (c & o)
                  break;
              c ? c = bitCode(i = intersect(i, a, c, e), e) : o = bitCode(a = intersect(i, a, o, e), e)
          }
          c = s
      }
      return f.length && r.push(f),
      r
  }
  function polygonclip(t, e) {
      for (var r, n, i, a, o, s, u = 1; u <= 8; u *= 2) {
          for (r = [],
          i = !(bitCode(n = t[t.length - 1], e) & u),
          a = 0; a < t.length; a++)
              (s = !(bitCode(o = t[a], e) & u)) !== i && r.push(intersect(n, o, u, e)),
              s && r.push(o),
              n = o,
              i = s;
          if (!(t = r).length)
              break
      }
      return r
  }
  function intersect(t, e, r, n) {
      return 8 & r ? [t[0] + (e[0] - t[0]) * (n[3] - t[1]) / (e[1] - t[1]), n[3]] : 4 & r ? [t[0] + (e[0] - t[0]) * (n[1] - t[1]) / (e[1] - t[1]), n[1]] : 2 & r ? [n[2], t[1] + (e[1] - t[1]) * (n[2] - t[0]) / (e[0] - t[0])] : 1 & r ? [n[0], t[1] + (e[1] - t[1]) * (n[0] - t[0]) / (e[0] - t[0])] : null
  }
  function bitCode(t, e) {
      var r = 0;
      return t[0] < e[0] ? r |= 1 : t[0] > e[2] && (r |= 2),
      t[1] < e[1] ? r |= 4 : t[1] > e[3] && (r |= 8),
      r
  }
  function feature(t, e, r) {
      if (!isObject$1(r = r || {}))
          throw new Error("options is invalid");
      var n = r.Ro
        , i = r.id;
      if (void 0 === t)
          throw new Error("geometry is required");
      if (e && e.constructor !== Object)
          throw new Error("properties must be an Object");
      return n && validateBBox(n),
      i && validateId(i),
      r = {
          type: "Feature"
      },
      i && (r.id = i),
      n && (r.Ro = n),
      r.properties = e || {},
      r.geometry = t,
      r
  }
  function polygon(t, e, r) {
      if (!t)
          throw new Error("coordinates is required");
      for (var n = 0; n < t.length; n++) {
          var i = t[n];
          if (i.length < 4)
              throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");
          for (var a = 0; a < i[i.length - 1].length; a++) {
              if (0 === n && 0 === a && !isNumber$1(i[0][0]) || !isNumber$1(i[0][1]))
                  throw new Error("coordinates must contain numbers");
              if (i[i.length - 1][a] !== i[0][a])
                  throw new Error("First and last Position are not equivalent.")
          }
      }
      return feature({
          type: "Polygon",
          coordinates: t
      }, e, r)
  }
  function lineString(t, e, r) {
      if (!t)
          throw new Error("coordinates is required");
      if (t.length < 2)
          throw new Error("coordinates must be an array of two or more positions");
      if (!isNumber$1(t[0][1]) || !isNumber$1(t[0][1]))
          throw new Error("coordinates must contain numbers");
      return feature({
          type: "LineString",
          coordinates: t
      }, e, r)
  }
  function multiLineString(t, e, r) {
      if (!t)
          throw new Error("coordinates is required");
      return feature({
          type: "MultiLineString",
          coordinates: t
      }, e, r)
  }
  function multiPolygon(t, e, r) {
      if (!t)
          throw new Error("coordinates is required");
      return feature({
          type: "MultiPolygon",
          coordinates: t
      }, e, r)
  }
  function isNumber$1(t) {
      return !isNaN(t) && null !== t && !Array.isArray(t)
  }
  function isObject$1(t) {
      return t && t.constructor === Object
  }
  function validateBBox(t) {
      if (!t)
          throw new Error("bbox is required");
      if (!Array.isArray(t))
          throw new Error("bbox must be an Array");
      if (4 !== t.length && 6 !== t.length)
          throw new Error("bbox must be an Array of 4 or 6 numbers");
      t.forEach(function(t) {
          if (!isNumber$1(t))
              throw new Error("bbox must only contain numbers")
      })
  }
  function validateId(t) {
      if (!t)
          throw new Error("id is required");
      if (-1 === ["string", "number"].indexOf(typeof t))
          throw new Error("id must be a number or a string")
  }
  function getCoords(t) {
      if (!t)
          throw new Error("coords is required");
      if ("Feature" === t.type && null !== t.geometry)
          return t.geometry.coordinates;
      if (t.coordinates)
          return t.coordinates;
      if (Array.isArray(t))
          return t;
      throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")
  }
  function bboxClip(t, e) {
      var r = getGeom(t)
        , n = getCoords(t)
        , i = t.properties;
      switch (r) {
      case "LineString":
      case "MultiLineString":
          var a = [];
          return (n = "LineString" === r ? [n] : n).forEach(function(t) {
              lineclip_1(t, e, a)
          }),
          1 === a.length ? lineString(a[0], i) : multiLineString(a, i);
      case "Polygon":
          return polygon(clipPolygon(n, e), i);
      case "MultiPolygon":
          return multiPolygon(n.map(function(t) {
              return clipPolygon(t, e)
          }), i);
      default:
          throw new Error("geometry " + r + " not supported")
      }
  }
  function clipPolygon(t, e) {
      for (var r = [], n = 0; n < t.length; n++) {
          var i = lineclip_1.polygon(t[n], e);
          0 < i.length && (i[0][0] === i[i.length - 1][0] && i[0][1] === i[i.length - 1][1] || i.push(i[0]),
          4 <= i.length && r.push(i))
      }
      return r
  }
  function getGeom(t) {
      return (t.geometry || t).type
  }
  function feature$1(t, e, r) {
      var n = {
          type: "Feature"
      };
      return 0 !== (r = void 0 === r ? {} : r).id && !r.id || (n.id = r.id),
      r.Ro && (n.Ro = r.Ro),
      n.properties = e || {},
      n.geometry = t,
      n
  }
  function polygon$1(t, e, r) {
      void 0 === r && (r = {});
      for (var n = 0, i = t; n < i.length; n++) {
          var a = i[n];
          if (a.length < 4)
              throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");
          for (var o = 0; o < a[a.length - 1].length; o++)
              if (a[a.length - 1][o] !== a[0][o])
                  throw new Error("First and last Position are not equivalent.")
      }
      return feature$1({
          type: "Polygon",
          coordinates: t
      }, e, r)
  }
  lineclip.p8t = lineclip,
  lineclip.polygon = polygonclip;
  var DEF_NDS_MAX_COORD = 2147483648
    , DEF_DEGREE_MAX_COORD = 180
    , MKT = 20037508.342789244;
  function tileInnerCoord2LngLat(t, e, r, n) {
      var a = r + (i = getTileSWCoord(t, e))[0]
        , i = n + i[1];
      return r = a << (e = getCoordShift(t.z, e)),
      n = i << e,
      [coord2Degree(r = 0 < a && r < 0 ? DEF_NDS_MAX_COORD - 1 : r), coord2Degree(n)]
  }
  function LngLat2TileInnerCoord(t, e, r, n, i) {
      var a = degree2Coord(r)
        , o = degree2Coord(n)
        , n = a >> (r = getCoordShift(i.z, e))
        , r = o >> r;
      return [n - (e = getTileSWCoord(i, e))[0], r - e[1]]
  }
  var cache = {};
  function lnglat2WGSCoord2(t) {
      if (cache[t])
          return cache[t];
      var e = 33 - t
        , r = degree2Coord(180) / (1 << e)
        , e = degree2Coord(90) / (1 << e)
        , n = 0 < r ? Math.floor(.5 + r) : Math.floor(r - .5)
        , i = 0 < e ? Math.floor(.5 + e) : Math.floor(e - .5);
      return cache[t] = [2 * n, 2 * i],
      cache[t]
  }
  function getWorldSize(t, e) {
      return lnglat2WGSCoord2(t + e)
  }
  function getTileSWCoord(t, e) {
      var n = (r = getWorldSize(t.z, e))[0]
        , e = r[1]
        , r = 1 << t.z;
      return [-n / 2 + t.x * n / r, e / 2 - (t.y + 1) * e / r]
  }
  function degree2Coord(t) {
      return Math.floor(t * DEF_NDS_MAX_COORD / DEF_DEGREE_MAX_COORD + .5)
  }
  function coord2Degree(t) {
      return t * DEF_DEGREE_MAX_COORD / DEF_NDS_MAX_COORD
  }
  function getCoordShift(t, e) {
      return 33 - e - t
  }
  function getMVTTileBbox(t, e, r, n, i) {
      return [t * (i = void 0 === i ? 256 : i) * n - MKT, -((e + 1) * i * n - MKT), (t + 1) * i * n - MKT, -(e * i * n - MKT)]
  }
  var MapboxVTSourceWorker = (SIa.prototype.bw = function(t, e, r, n, i, a) {
      var o = this
        , s = {
          point: {},
          line: {},
          polygon: {},
          polyhedron: {},
          label: {}
      }
        , u = new XMLHttpRequest;
      return u.onreadystatechange = function() {
          var t;
          4 !== u.readyState || 200 !== u.status && 204 !== u.status || (s.point = o.AX(i.point),
          s.line = o.AX(i.line),
          s.polygon = o.AX(i.polygon),
          s.polyhedron = o.AX(i.polyhedron),
          s.label = o.AX(i.label),
          t = new VectorTile$1(new Pbf(new Uint8Array(u.response))),
          t = o.Ow(t, {
              x: e.x,
              y: e.y,
              z: e.z,
              projectionId: r,
              tileSize: n
          }, s),
          a(null, exports.Ln({
              zo: e
          }, t)))
      }
      ,
      u.responseType = "arraybuffer",
      u.open("GET", t, !0),
      u.send(),
      {
          cancel: function() {
              u.abort()
          }
      }
  }
  ,
  SIa.prototype.mX = function(t, e, r) {
      var n = {
          point: {},
          line: {},
          polygon: {},
          polyhedron: {},
          label: {}
      };
      n.point = this.AX(e.point),
      n.line = this.AX(e.line),
      n.polygon = this.AX(e.polygon),
      n.polyhedron = this.AX(e.polyhedron),
      n.label = this.AX(e.label),
      this.xw(t, n, !0),
      this.zw(t, n, !0),
      this.nz(t, n, !0),
      this.SX(t, n, !0),
      this.i1(t, n, !0),
      r && r(null, t)
  }
  ,
  SIa.prototype.Ow = function(l, t, e) {
      var r = t.x
        , n = t.y
        , i = t.z
        , a = t.tileSize
        , o = t.projectionId;
      l.z = i,
      l.x = r,
      l.y = n;
      var h = ProjectionManager.getProjection(o)
        , t = h.getResolution(i);
      l.projectionId = o,
      l.Ro = getMVTTileBbox(r, n, i, t, a),
      l.zS = lcs.getLocalByCoord([l.Ro[0], l.Ro[1]]),
      l.visible = {
          point: {},
          line: {},
          polygon: {},
          label: {},
          polyhedron: {}
      };
      var s = ProjectionManager.getProjection(o).getResolution(i);
      return forIn(l.layers, function(f) {
          var t = f.Cw;
          f.Ah = [],
          f.scale = s * a / f.extent;
          var e = transform[o].Xs(a * r, a * n, i);
          f.ox = e[0],
          f.oy = e[1],
          forEach(t, function(t, e) {
              if ((t = f.Gw(e)).Dw(),
              f.Ah.push(t),
              t.lines && 0 < t.lines.length) {
                  t.Rw = [],
                  t.n1 = [];
                  for (var r = 0, n = t.lines.length; r < n; r++) {
                      for (var i = [], a = [], o = 0, s = t.lines[r].length; o < s; o++) {
                          var u = [f.ox + f.scale * t.lines[r][o][0], f.oy - f.scale * t.lines[r][o][1]]
                            , c = [u[0] - l.zS.center[0], u[1] - l.zS.center[1]];
                          a.push(h.unproject(u[0], u[1])),
                          i.push(c)
                      }
                      t.Rw.push(i),
                      t.n1.push(a)
                  }
              }
          })
      }),
      this.uW(l),
      this.xw(l, e),
      this.zw(l, e),
      this.nz(l, e),
      this.SX(l, e),
      this.i1(l, e),
      l
  }
  ,
  SIa.prototype.uW = function(t) {
      for (var e in t.polygons = {},
      t.polygonOut = {},
      t.polyhedrons = {},
      t.polylines = {},
      t.points = {},
      t.layers)
          if (t.layers.hasOwnProperty(e)) {
              for (var r = t.layers[e], n = [], i = [], a = [], o = [], s = [], u = 0; u < r.Ah.length; u += 1) {
                  var c = r.Ah[u];
                  if (3 == +c.type && c.Rw) {
                      for (var f = c.Rw, l = c.n1, h = [], d = this.g8t(c), v = d.w8t, g = d.height, b = 0; b < f.length; b++)
                          PlaneGeometryUtilInstance.isClockwise(f[b]) ? h.push([b]) : h.length && h[h.length - 1].push(b);
                      for (var p = 0; p < h.length; p++) {
                          var m = h[p];
                          if (1 < m.length)
                              if (v) {
                                  for (var y = [], T = [], x = 0; x < m.length; x++) {
                                      var w = l[m[x]];
                                      if (P = this.d8t(t, w)) {
                                          0 < x && y.push(T.length / 2);
                                          for (var A = [], M = 0; M < P.length; M++) {
                                              var S = P[M];
                                              A.unshift(S[0], S[1])
                                          }
                                          T.push.apply(T, A)
                                      }
                                  }
                                  a.push({
                                      _id_: Util.getGuid("amap_"),
                                      properties: c.properties,
                                      path: T,
                                      LQ: y,
                                      height: g
                                  })
                              } else {
                                  for (y = [],
                                  T = [],
                                  x = 0; x < m.length; x++) {
                                      var P = f[m[x]];
                                      for (0 < x && y.push(T.length / 2),
                                      M = 0; M < P.length; M++) {
                                          var I = P[M];
                                          T.push(I[0], I[1])
                                      }
                                      i.push({
                                          properties: c.properties,
                                          path: P,
                                          _id_: Util.getGuid("amap_")
                                      })
                                  }
                                  n.push({
                                      properties: c.properties,
                                      path: T,
                                      LQ: y
                                  })
                              }
                          else if (v) {
                              if (T = [],
                              w = l[m[0]],
                              P = this.d8t(t, w)) {
                                  for (M = 0; M < P.length; M++) {
                                      var $ = P[M];
                                      T.unshift($[0], $[1])
                                  }
                                  a.push({
                                      _id_: Util.getGuid("amap_"),
                                      properties: c.properties,
                                      path: T,
                                      height: g
                                  })
                              }
                          } else {
                              for (T = [],
                              P = f[m[0]],
                              M = 0; M < P.length; M++) {
                                  var C = P[M];
                                  T.push(C[0], C[1])
                              }
                              n.push({
                                  properties: c.properties,
                                  path: T
                              }),
                              i.push({
                                  properties: c.properties,
                                  path: P,
                                  _id_: Util.getGuid("amap_")
                              })
                          }
                      }
                  } else if (2 == +c.type && c.Rw)
                      for (var k = 0, N = c.Rw.length; k < N; k++)
                          o.push({
                              properties: c.properties,
                              path: c.Rw[k],
                              _id_: Util.getGuid("amap_")
                          });
                  else if (1 == +c.type && c.Rw)
                      for (l = c.n1,
                      p = 0; p < c.Rw.length; p++)
                          s.push({
                              _id_: Util.getGuid("amap_"),
                              properties: c.properties,
                              path: c.Rw[p],
                              lnglat: __spreadArrays(l[0][0])
                          });
                  delete c.n1
              }
              t.polygons[e] = n,
              t.polygonOut[e] = i,
              t.polyhedrons[e] = a,
              t.polylines[e] = o,
              t.points[e] = s
          }
      delete t.layers
  }
  ,
  SIa.prototype.xw = function(t, e, r) {
      if (void 0 === r && (r = !1),
      !t || !t.$c || r) {
          var n = new VectorTileSegements;
          t.Uc = n,
          r || (t.$c = new PolylineBucket);
          var i = e.line.sourceLayer
            , a = t.polylines;
          if (a)
              for (var o in t.visible.line[i] = [],
              a)
                  if (!i || i === o)
                      for (var u = a[o], c = 0, f = u.length; c < f; c++) {
                          var l = u[c]
                            , h = this.Mn(e.line, l.properties)
                            , d = h.color
                            , v = h.lineWidth
                            , g = h.dash
                            , b = +(h.visible || !h.filter);
                          t.visible.line[i] || (t.visible.line[i] = []),
                          b && t.visible.line[i].push(l._id_),
                          d[3] *= b,
                          r ? n.add(d + ":" + v + ":" + g, 0, l.a1, 0, 22) : (b = (h = t.$c.g0(l.path, {
                              X_: 0,
                              lineJoin: "round",
                              lineCap: "butt"
                          })).Iw,
                          h = h.distance,
                          0 < b && (l.a1 = b,
                          n.add(d + ":" + v + ":" + g, 0, b, 0, 22),
                          l.distance = h))
                      }
      }
  }
  ,
  SIa.prototype.zw = function(t, e, r) {
      if (void 0 === r && (r = !1),
      !t || !t.Dc || r) {
          var n = new VectorTileSegements;
          t.Oc = n;
          var i = new VectorTileSegements;
          t.Fc = i,
          r || (t.Dc = new PolygonBucket,
          t.pX = new PolylineBucket);
          var a = e.polygon.sourceLayer
            , o = t.polygons;
          if (o) {
              for (var s in o)
                  if (!a || a === s)
                      for (var u = 0, c = (v = o[s]).length; u < c; u++) {
                          var f, l = v[u], h = +((g = this.Mn(e.polygon, l.properties)).visible || !g.filter);
                          g.color[3] *= h,
                          r ? n.add(g.color + "", 0, l.a1, 0, 22) : 0 < (f = t.Dc.Nx(l.path, l.LQ)) && (l.a1 = f,
                          n.add(g.color + "", 0, f, 0, 22))
                      }
              var d = t.polygonOut;
              for (s in d)
                  if (!a || a === s)
                      for (var v, u = 0, c = (v = d[s]).length; u < c; u++) {
                          var g, b, p, m = v[u], h = +((g = this.Mn(e.polygon, m.properties)).visible || !g.filter);
                          t.visible.polygon[a] || (t.visible.polygon[a] = []),
                          h && t.visible.polygon[a].push(m._id_),
                          g.borderWidth *= h,
                          r ? i.add(g.borderColor + ":" + g.dash + ":" + g.borderWidth, 0, m.a1, 0, 22) : (b = (p = t.pX.g0(m.path, {
                              X_: 0,
                              lineJoin: "round",
                              lineCap: "butt"
                          })).Iw,
                          p = p.distance,
                          0 < b && (m.a1 = b,
                          i.add(g.borderColor + ":" + g.dash + ":" + g.borderWidth, 0, b, 0, 22),
                          m.distance = p))
                      }
          }
      }
  }
  ,
  SIa.prototype.nz = function(t, e, r) {
      if (void 0 === r && (r = !1),
      !t || !t.A_ || r) {
          var n = new NebulaSegements;
          t.w0 = n,
          r || (t.A_ = new FillExtrusionBucket);
          var i = e.polyhedron.sourceLayer
            , a = t.polyhedrons;
          if (a)
              for (var o in t.visible.polyhedron[i] = [],
              a)
                  if (!i || i === o)
                      for (var u = a[o], c = 0, f = u.length; c < f; c++) {
                          var l = u[c]
                            , h = l.properties
                            , d = this.Mn(e.polyhedron, void 0 === h ? {} : h)
                            , h = +(d.visible || !d.filter);
                          t.visible.polyhedron[i] || (t.visible.polyhedron[i] = []),
                          h ? t.visible.polyhedron[i].push(l._id_) : (d.topColor = void 0,
                          d.sideColor = void 0,
                          d.texture = ""),
                          r ? n.add(l._id_, 1e3, l.a1, 0, 22, d.texture, d.topColor, d.sideColor) : 0 < (h = t.A_.tz(l.path, l.height, l.LQ)) && (l.a1 = h,
                          n.add(l._id_, 1e3, h, 0, 22, d.texture, d.topColor, d.sideColor))
                      }
      }
  }
  ,
  SIa.prototype.SX = function(t, e, r) {
      if (void 0 === r && (r = !1),
      !t || !t.dX || r) {
          var n = t.IX
            , n = new VectorTileSegements;
          t.IX = n,
          t.dX = new CircleBucket;
          var i = e.point.sourceLayer
            , a = t.points;
          if (a)
              for (var o in t.visible.point[i] = [],
              a)
                  if (!i || i === o)
                      for (var u = a[o], c = 0, f = u.length; c < f; c++) {
                          var l = u[c]
                            , h = this.Mn(e.point, l.properties);
                          t.visible.point[i] || (t.visible.point[i] = []),
                          t.visible.point[i].push(l._id_),
                          0 < (h = t.dX.wb(l.path[0], h)) && n.add("point", 0, h, 0, 22)
                      }
      }
  }
  ,
  SIa.prototype.i1 = function(t, e, r) {
      if (void 0 === r && (r = !1),
      !t || !t.labels || r) {
          t.labels = [];
          var n = e.label.sourceLayer;
          t.visible.label[n] = [];
          var i = t.points[n];
          if (i)
              for (var a = 0, o = i.length; a < o; a++) {
                  var s = i[a]
                    , c = (u = this.g8t(s)).height
                    , f = u.w8t
                    , u = this.Mn(e.label, s.properties);
                  t.visible.label[n].push(s._id_),
                  t.labels.push(exports.Ln(exports.Ln({}, u), {
                      position: f ? __spreadArrays(s.lnglat, [c + 1]) : s.lnglat
                  }))
              }
      }
  }
  ,
  SIa.prototype.Mn = function(t, e) {
      var r, n = {
          visible: !0,
          filter: !0
      };
      for (r in t) {
          var i = t[r];
          n[r] = "style" === r || "icon" === r || "text" === r ? this.Mn(i, e) : "function" == typeof i ? i()(e, t.injection) : i,
          -1 < r.toLowerCase().indexOf("color") && (n[r] = Util.color2RgbaArray(n[r])),
          "filter" === r && (n.filter = this.$X(e, i))
      }
      return n
  }
  ,
  SIa.prototype.AX = function(t) {
      var e, r = {};
      for (e in t) {
          var n = t[e];
          n.indexOf && -1 < n.indexOf("function") ? (n = n.replace("function", "return function"),
          r[e] = new Function(n)) : r[e] = "style" === e || "icon" === e || "text" === e ? this.AX(n) : n
      }
      return r
  }
  ,
  SIa.prototype.$X = function(t, e) {
      if (!e)
          return !0;
      var r = e[0]
        , n = e[1]
        , i = e[2]
        , a = t[r];
      switch (n) {
      case "in":
          return -1 < i.indexOf(a);
      case "out":
          return i.indexOf(a) < 0
      }
      return !0
  }
  ,
  SIa.prototype.d8t = function(t, e) {
      var r = t.projectionId
        , n = t.zS
        , i = t.Ro
        , a = ProjectionManager.getProjection(r)
        , o = i[0]
        , t = i[1]
        , r = i[2]
        , i = i[3]
        , i = __spreadArrays(a.unproject(o, t), a.unproject(r, i))
        , s = null === (i = bboxClip(polygon$1([e]), i).geometry) || void 0 === i ? void 0 : i.coordinates[0];
      if (!s)
          return s;
      for (var u = [], c = 0; c < s.length; c++) {
          var f = s[c]
            , f = a.project(f[0], f[1]);
          u.push([f[0] - n.center[0], f[1] - n.center[1]])
      }
      return u
  }
  ,
  SIa.prototype.g8t = function(t) {
      var e = (t = "Y" === (e = t.properties || {})._AS_CUBE && e._HEIGHT_PROP) ? +e[e._HEIGHT_PROP] : 0;
      return {
          w8t: t,
          height: e = Number.isNaN(e) || e < 0 ? 0 : e
      }
  }
  ,
  SIa);
  function SIa() {}
  var Ring = {
      read: function(t, e) {
          return t.nw(Ring.iw, {
              path: []
          }, e)
      },
      iw: function(t, e, r) {
          0 === t && r.tw(e.path, !0)
      },
      write: function(t, e) {
          if (t.path)
              for (var r = 0; r < t.path.length; r++)
                  e.rw(0, t.path[r])
      }
  }
    , Building = {
      read: function(t, e) {
          return t.nw(Building.iw, {
              minzoom: 0,
              maxzoom: 0,
              path: [],
              height: 0,
              ew: "",
              altitude: 0
          }, e)
      },
      iw: function(t, e, r) {
          0 === t ? e.minzoom = r.ow() : 1 === t ? e.maxzoom = r.ow() : 2 === t ? e.path.push(Ring.read(r, r.ow() + r.pos)) : 3 === t ? e.height = r.ow() : 4 === t ? e.ew = r.aw() : 5 === t && (e.altitude = r.ow())
      },
      write: function(t, e) {
          if (t.minzoom && e.rw(0, t.minzoom),
          t.maxzoom && e.rw(1, t.maxzoom),
          t.path)
              for (var r = 0; r < t.path.length; r++)
                  e.fw(2, Ring.write, t.path[r]);
          t.height && e.rw(3, t.height),
          t.ew && e.uw(4, t.ew),
          t.altitude && e.rw(5, t.altitude)
      }
  }
    , BuildingSameStyle = {
      read: function(t, e) {
          return t.nw(BuildingSameStyle.iw, {
              mainkey: 0,
              subkey: 0,
              items: [],
              resolution: 0
          }, e)
      },
      iw: function(t, e, r) {
          0 === t ? e.mainkey = r.ow() : 1 === t ? e.subkey = r.ow() : 2 === t ? e.items.push(Building.read(r, r.ow() + r.pos)) : 3 === t && (e.resolution = r.ow())
      },
      write: function(t, e) {
          if (t.mainkey && e.rw(0, t.mainkey),
          t.subkey && e.rw(1, t.subkey),
          t.items)
              for (var r = 0; r < t.items.length; r++)
                  e.fw(2, Building.write, t.items[r]);
          t.resolution && e.rw(3, t.resolution)
      }
  }
    , buildingLayer = {
      read: function(t, e) {
          return t.nw(buildingLayer.iw, {
              building: []
          }, e)
      },
      iw: function(t, e, r) {
          0 === t && e.building.push(BuildingSameStyle.read(r, r.ow() + r.pos))
      },
      write: function(t, e) {
          if (t.building)
              for (var r = 0; r < t.building.length; r++)
                  e.fw(0, BuildingSameStyle.write, t.building[r])
      }
  }
    , Poi = {
      read: function(t, e) {
          return t.nw(Poi.IQ, {
              minzoom: 0,
              maxzoom: 0,
              pos: [],
              cw: "",
              ew: "",
              name: "",
              rank: 0,
              BQ: "",
              name_en: "",
              QQ: "",
              CQ: "",
              $G: [],
              iQ: [],
              JQ: []
          }, e)
      },
      IQ: function(t, e, r) {
          0 === t ? e.minzoom = r.ow() : 1 === t ? e.maxzoom = r.ow() : 2 === t ? r.tw(e.pos, !0) : 3 === t ? e.cw = r.aw() : 4 === t ? e.ew = r.aw() : 5 === t ? e.name = r.aw() : 6 === t ? e.rank = r.ow() : 7 === t ? e.BQ = r.aw() : 8 === t ? e.name_en = r.aw() : 9 === t ? e.QQ = r.aw() : 10 === t ? e.CQ = r.aw() : 11 === t ? r.tw(e.$G) : 12 === t ? r.tw(e.iQ) : 13 === t && r.tw(e.JQ)
      },
      write: function(t, e) {
          if (t.minzoom && e.rw(0, t.minzoom),
          t.maxzoom && e.rw(1, t.maxzoom),
          t.pos)
              for (var r = 0; r < t.pos.length; r++)
                  e.rw(2, t.pos[r]);
          if (t.cw && e.uw(3, t.cw),
          t.ew && e.uw(4, t.ew),
          t.name && e.uw(5, t.name),
          t.rank && e.rw(6, t.rank),
          t.BQ && e.uw(7, t.BQ),
          t.name_en && e.uw(8, t.name_en),
          t.QQ && e.uw(9, t.QQ),
          t.CQ && e.uw(10, t.CQ),
          t.$G)
              for (r = 0; r < t.$G.length; r++)
                  e.rw(11, t.$G[r]);
          if (t.iQ)
              for (r = 0; r < t.iQ.length; r++)
                  e.rw(12, t.iQ[r]);
          if (t.JQ)
              for (r = 0; r < t.JQ.length; r++)
                  e.rw(13, t.JQ[r])
      }
  }
    , PoiSameStyle = {
      read: function(t, e) {
          return t.nw(PoiSameStyle.IQ, {
              mainkey: 0,
              subkey: 0,
              items: [],
              resolution: 0
          }, e)
      },
      IQ: function(t, e, r) {
          0 === t ? e.mainkey = r.ow() : 1 === t ? e.subkey = r.ow() : 2 === t ? e.items.push(Poi.read(r, r.ow() + r.pos)) : 3 === t && (e.resolution = r.ow())
      },
      write: function(t, e) {
          if (t.mainkey && e.rw(0, t.mainkey),
          t.subkey && e.rw(1, t.subkey),
          t.items)
              for (var r = 0; r < t.items.length; r++)
                  e.fw(2, Poi.write, t.items[r]);
          t.resolution && e.rw(3, t.resolution)
      }
  }
    , PoiLayer = {
      read: function(t, e) {
          return t.nw(PoiLayer.IQ, {
              poilabel: []
          }, e)
      },
      IQ: function(t, e, r) {
          0 === t && e.poilabel.push(PoiSameStyle.read(r, r.ow() + r.pos))
      },
      write: function(t, e) {
          if (t.poilabel)
              for (var r = 0; r < t.poilabel.length; r++)
                  e.fw(0, PoiSameStyle.write, t.poilabel[r])
      }
  }
    , Ring$1 = {
      read: function(t, e) {
          return t.nw(Ring$1.iw, {
              path: []
          }, e)
      },
      iw: function(t, e, r) {
          0 === t && r.tw(e.path, !0)
      },
      write: function(t, e) {
          if (t.path)
              for (var r = 0; r < t.path.length; r++)
                  e.rw(0, t.path[r])
      }
  }
    , Region = {
      read: function(t, e) {
          return t.nw(Region.iw, {
              minzoom: 0,
              maxzoom: 0,
              path: [],
              sw: ""
          }, e)
      },
      iw: function(t, e, r) {
          0 === t ? e.minzoom = r.ow() : 1 === t ? e.maxzoom = r.ow() : 2 === t ? e.path.push(Ring$1.read(r, r.ow() + r.pos)) : 3 === t && (e.sw = r.aw())
      },
      write: function(t, e) {
          if (t.minzoom && e.rw(0, t.minzoom),
          t.maxzoom && e.rw(1, t.maxzoom),
          t.path)
              for (var r = 0; r < t.path.length; r++)
                  e.fw(2, Ring$1.write, t.path[r]);
          t.sw && e.uw(3, t.sw)
      }
  }
    , RegionSameStyle = {
      read: function(t, e) {
          return t.nw(RegionSameStyle.iw, {
              mainkey: 0,
              subkey: 0,
              items: [],
              resolution: 0
          }, e)
      },
      iw: function(t, e, r) {
          0 === t ? e.mainkey = r.ow() : 1 === t ? e.subkey = r.ow() : 2 === t ? e.items.push(Region.read(r, r.ow() + r.pos)) : 3 === t && (e.resolution = r.ow())
      },
      write: function(t, e) {
          if (t.mainkey && e.rw(0, t.mainkey),
          t.subkey && e.rw(1, t.subkey),
          t.items)
              for (var r = 0; r < t.items.length; r++)
                  e.fw(2, Region.write, t.items[r]);
          t.resolution && e.rw(3, t.resolution)
      }
  }
    , regionLayer = {
      read: function(t, e) {
          return t.nw(regionLayer.iw, {
              region: []
          }, e)
      },
      iw: function(t, e, r) {
          0 === t && e.region.push(RegionSameStyle.read(r, r.ow() + r.pos))
      },
      write: function(t, e) {
          if (t.region)
              for (var r = 0; r < t.region.length; r++)
                  e.fw(0, RegionSameStyle.write, t.region[r])
      }
  }
    , Road = {
      read: function(t, e) {
          return t.nw(Road.iw, {
              minzoom: 0,
              maxzoom: 0,
              path: [],
              shield: "",
              shieldType: 0,
              name: "",
              rank: 0,
              name_en: "",
              BQ: "",
              QQ: "",
              CQ: "",
              $G: [],
              iQ: []
          }, e)
      },
      iw: function(t, e, r) {
          0 === t ? e.minzoom = r.ow() : 1 === t ? e.maxzoom = r.ow() : 2 === t ? r.tw(e.path, !0) : 3 === t ? e.shield = r.aw() : 4 === t ? e.shieldType = r.ow() : 5 === t ? e.name = r.aw() : 6 === t ? e.rank = r.ow() : 7 === t ? e.BQ = r.aw() : 8 === t ? e.name_en = r.aw() : 9 === t ? e.QQ = r.aw() : 10 === t ? e.CQ = r.aw() : 11 === t ? r.tw(e.$G) : 12 === t && (e.id = r.ow())
      },
      write: function(t, e) {
          if (t.minzoom && e.rw(0, t.minzoom),
          t.maxzoom && e.rw(1, t.maxzoom),
          t.path)
              for (var r = 0; r < t.path.length; r++)
                  e.rw(2, t.path[r]);
          if (t.shield && e.uw(3, t.shield),
          t.shieldType && e.rw(4, t.shieldType),
          t.name && e.uw(5, t.name),
          t.rank && e.rw(6, t.rank),
          t.BQ && e.uw(7, t.BQ),
          t.name_en && e.uw(8, t.name_en),
          t.QQ && e.uw(9, t.QQ),
          t.CQ && e.uw(10, t.CQ),
          t.$G)
              for (r = 0; r < t.$G.length; r++)
                  e.rw(11, t.$G[r]);
          t.id && e.rw(12, t.id)
      }
  }
    , RoadSameStyle = {
      read: function(t, e) {
          return t.nw(RoadSameStyle.iw, {
              mainkey: 0,
              subkey: 0,
              items: [],
              resolution: 0
          }, e)
      },
      iw: function(t, e, r, n) {
          0 === t ? e.mainkey = r.ow() : 1 === t ? e.subkey = r.ow() : 2 === t ? e.items.push(Road.read(r, r.ow() + r.pos)) : 3 === t && (e.resolution = r.ow())
      },
      write: function(t, e) {
          if (t.mainkey && e.rw(0, t.mainkey),
          t.subkey && e.rw(1, t.subkey),
          t.items)
              for (var r = 0; r < t.items.length; r++)
                  e.fw(2, Road.write, t.items[r]);
          t.resolution && e.rw(3, t.resolution)
      }
  }
    , roadLayer = {
      read: function(t, e) {
          return t.nw(roadLayer.iw, {
              road: []
          }, e)
      },
      iw: function(t, e, r, n) {
          0 === t && e.road.push(RoadSameStyle.read(r, r.ow() + r.pos))
      },
      write: function(t, e) {
          if (t.road)
              for (var r = 0; r < t.road.length; r++)
                  e.fw(0, RoadSameStyle.write, t.road[r])
      }
  }
    , roadNameLayer = {
      read: function(t, e) {
          return t.nw(roadNameLayer.iw, {
              roadName: []
          }, e)
      },
      iw: function(t, e, r, n) {
          0 === t && e.roadName.push(RoadSameStyle.read(r, r.ow() + r.pos))
      },
      write: function(t, e) {
          if (t.roadName)
              for (var r = 0; r < t.road.length; r++)
                  e.fw(0, RoadSameStyle.write, t.roadName[r])
      }
  }
    , Result = {
      read: function(t, e) {
          return t.nw(Result.IQ, {
              tiles: [],
              version: "",
              status: !1,
              db: ""
          }, e)
      },
      IQ: function(t, e, r) {
          0 === t ? e.tiles.push(Result.Gh.read(r, r.ow() + r.pos)) : 1 === t ? e.version = r.aw() : 2 === t ? e.status = r.vw() : 3 === t && (e.db = r.aw())
      },
      write: function(t, e) {
          if (t.tiles)
              for (var r = 0; r < t.tiles.length; r++)
                  e.fw(0, Result.Gh.write, t.tiles[r]);
          t.version && e.uw(1, t.version),
          t.status && e.hw(2, t.status),
          t.db && e.uw(3, t.db)
      },
      Gh: {}
  };
  Result.Gh.read = function(t, e) {
      return t.nw(Result.Gh.IQ, {
          z: 0,
          x: 0,
          y: 0,
          layers: [],
          t: 0
      }, e)
  }
  ,
  Result.Gh.IQ = function(t, e, r) {
      0 === t ? e.z = r.ow() : 1 === t ? e.x = r.ow() : 2 === t ? e.y = r.ow() : 3 === t ? e.layers.push(Result.Gh.lw.read(r, r.ow() + r.pos)) : 4 === t && (e.t = r.ow())
  }
  ,
  Result.Gh.write = function(t, e) {
      if (t.z && e.rw(0, t.z),
      t.x && e.rw(1, t.x),
      t.y && e.rw(2, t.y),
      t.layers)
          for (var r = 0; r < t.layers.length; r++)
              e.fw(3, Result.Gh.lw.write, t.layers[r]);
      t.t && e.rw(4, t.t)
  }
  ,
  Result.Gh.lw = {},
  Result.Gh.lw.read = function(t, e) {
      return t.nw(Result.Gh.lw.IQ, {
          z: 0,
          x: 0,
          y: 0,
          type: 0,
          d: null,
          t: 0
      }, e)
  }
  ,
  Result.Gh.lw.IQ = function(t, e, r) {
      0 === t ? e.z = r.ow() : 1 === t ? e.x = r.ow() : 2 === t ? e.y = r.ow() : 3 === t ? e.type = r.ow() : 4 === t ? e.d = r.mw() : 5 === t && (e.t = r.ow())
  }
  ,
  Result.Gh.lw.write = function(t, e) {
      t.z && e.rw(0, t.z),
      t.x && e.rw(1, t.x),
      t.y && e.rw(2, t.y),
      t.type && e.rw(3, t.type),
      t.d && e.ww(4, t.d),
      t.t && e.rw(5, t.t)
  }
  ;
  var Style = {
      read: function(t, e) {
          return t.nw(Style.IQ, {
              bgColor: "",
              zn: 0,
              xV: "",
              stylemaps: [],
              test: 0
          }, e)
      },
      IQ: function(t, e, r) {
          1 === t ? e.bgColor = r.aw() : 2 === t ? e.zn = r.ow(!0) : 3 === t ? e.xV = r.aw() : 4 === t ? e.stylemaps.push(Style.SV.read(r, r.ow() + r.pos)) : 5 === t && (e.test = r.ow(!0))
      },
      write: function(t, e) {
          if (t.bgColor && e.uw(1, t.bgColor),
          t.zn && e.rw(2, t.zn),
          t.xV && e.uw(3, t.xV),
          t.stylemaps)
              for (var r = 0; r < t.stylemaps.length; r++)
                  e.fw(4, Style.SV.write, t.stylemaps[r]);
          t.test && e.rw(5, t.test)
      },
      SV: {}
  };
  Style.SV.read = function(t, e) {
      return t.nw(Style.SV.IQ, {
          key: [],
          browserStyle: [],
          levelStyleMapping: []
      }, e)
  }
  ,
  Style.SV.IQ = function(t, e, r) {
      1 === t ? e.key.push(r.aw()) : 2 === t ? e.browserStyle.push(r.aw()) : 3 === t && r.tw(e.levelStyleMapping, !0)
  }
  ,
  Style.SV.write = function(t, e) {
      if (t.key)
          for (var r = 0; r < t.key.length; r++)
              e.uw(1, t.key[r]);
      if (t.browserStyle)
          for (r = 0; r < t.browserStyle.length; r++)
              e.uw(2, t.browserStyle[r]);
      if (t.levelStyleMapping)
          for (r = 0; r < t.levelStyleMapping.length; r++)
              e.rw(3, t.levelStyleMapping[r])
  }
  ;
  var decodeStyle = function(t) {
      return t = new Pbf(t),
      Style.read(t)
  }, decodePois = function(t) {
      return t = new Pbf(t),
      PoiLayer.read(t)
  }, decodeRoads = function(t) {
      return t = new Pbf(t),
      roadLayer.read(t)
  }, decodeRoadNames = function(t) {
      return t = new Pbf(t),
      roadNameLayer.read(t)
  }, decodeRegions = function(t) {
      return t = new Pbf(t),
      regionLayer.read(t)
  }, decodeBuildings = function(t) {
      return t = new Pbf(t),
      buildingLayer.read(t)
  }, decodeTiles = function(t) {
      for (var t = new Pbf(t), e = (t = Result.read(t)).tiles, r = 0, n = e.length; r < n; r += 1)
          for (var i = e[r].layers, a = 0, o = i.length; a < o; a += 1)
              switch (i[a].type) {
              case 0:
                  i[a].d = decodePois(i[a].d);
                  break;
              case 1:
                  i[a].d = decodeRoads(i[a].d);
                  break;
              case 2:
                  i[a].d = decodeRegions(i[a].d);
                  break;
              case 3:
                  i[a].d = decodeBuildings(i[a].d);
                  break;
              case 4:
                  i[a].d = decodeRoadNames(i[a].d)
              }
      return t
  }, CONSTS$2 = {
      _U: ["th", "my"]
  }, SDFManagerBase = (ZPa = Event,
  __extends($Pa, ZPa),
  $Pa.jU = function(t) {
      return t = LangManager.gG(t + ""),
      -1 !== CONSTS$2._U.indexOf(t)
  }
  ,
  $Pa.prototype.FU = function(t) {
      for (var e = [], r = 0, n = t; r < n.length; r++) {
          var i = n[r];
          LangManager.gG(i + ""),
          e.push(i)
      }
      return {
          UU: e,
          DU: []
      }
  }
  ,
  $Pa.prototype.measureText = function(t, e, r) {
      if (r) {
          r.font = (e || 12) + "px";
          for (var n = "", i = 0, a = t; i < a.length; i++) {
              var o = a[i];
              n += String.fromCharCode(o)
          }
          return r.measureText(n).width
      }
      return 0
  }
  ,
  $Pa.prototype.lineBreak = function(t, e) {
      var n = void 0 === (r = (e = void 0 === e ? {} : e).fontSize) ? 12 : r
        , i = e.maxWidth
        , a = e.CO
        , o = e.fj
        , r = void 0 === o ? 6 : o
        , s = void 0 === (o = e.type) ? "en" : o
        , u = e.YQ
        , c = (t = void 0 === t ? "" : t).split(" ")
        , f = []
        , i = i || 90
        , l = 0
        , h = []
        , d = []
        , v = [0];
      if ("labelsLayer" === e.from) {
          for (var g = t.length, b = Math.ceil(g / r), p = Math.ceil(g / b), m = void 0, y = 0, T = 0; T < b; T++) {
              h[T] || (h[T] = [y]),
              0 === T ? m = a.slice(0, y = g % p || p) : (m = a.slice(y, y + p),
              y += p);
              var x = this.measureText(m, n, u);
              d.push(x),
              h[T].push(y)
          }
          for (T = 0; T < h.length; T++) {
              var w = h[T];
              v.push(w[w.length - 1])
          }
      } else if ("ch" === s)
          for (T = y = 0; T < c.length; T++) {
              for (var w = c[T], m = [], A = 0; A < w.length; A++)
                  m.push(w.charCodeAt(A));
              x = this.measureText(m, n, u),
              d.push(x),
              h.push([y, y + w.length + 1]),
              y += w.length + 1,
              v.push(y)
          }
      else {
          for (T = 0; T < c.length; T++) {
              var M = c[T]
                , m = [];
              if ("en" === s)
                  for (var S = 0; S < M.length; S++)
                      m.push(M.charCodeAt(S));
              else {
                  var P = -1 === (P = a.indexOf("32", l)) ? a.length : P;
                  m = a.slice(l, P),
                  l = P + 1
              }
              x = this.measureText(m, n, u),
              f.push(x)
          }
          for (r = Math.max.apply(Math, f),
          h = (i = this.GU(f, i < r ? r : i)).lines,
          d = i.BU,
          T = 0; T < h.length; T++) {
              var w = h[T]
                , I = c.slice(w[0], w[w.length - 1] + 1).join(" ")
                , $ = t.indexOf(I)
                , I = I.length - 1;
              v.push($ + I + 1)
          }
      }
      return {
          lines: h,
          oQ: v,
          width: d,
          maxWidth: Math.max.apply(Math, d)
      }
  }
  ,
  $Pa.prototype.GU = function(t, e) {
      for (var r = [], n = 0, i = 0, a = [], o = 0, s = t.length, u = 0; u < s; u++) {
          var c = t[u];
          i += c,
          r[n] || (r[n] = []),
          e < i && (r[++n] = [],
          a.push(o),
          o = i = 0),
          r[n].push(u),
          o += c,
          u === s - 1 && a.push(o)
      }
      return {
          lines: r,
          BU: a
      }
  }
  ,
  $Pa.prototype.destroy = function() {}
  ,
  $Pa), ZPa, LoadFlag, jRa, kRa;
  function $Pa() {
      var t = ZPa.call(this) || this;
      return t.CLASS_NAME = "SDFManagerBase",
      t
  }
  jRa = LoadFlag = LoadFlag || {},
  jRa.TEXTUREFINISH = "TEXTUREFINISH",
  jRa.UNLOAD = "unload",
  jRa.LOADING = "loading",
  jRa.LOADED = "loaded",
  jRa.FAIL = "fail",
  kRa = exports.qu || (exports.qu = {}),
  kRa.AllLoaded = "AllLoaded",
  kRa.AllUnLoaded = "AllUnLoaded",
  kRa.SomeLoading = "SomeLoading",
  kRa.AllLoading = "AllLoading";
  var SDFManagerWorker = (lRa = SDFManagerBase,
  __extends(mRa, lRa),
  mRa.prototype.vW = function(t, e) {
      var n = void 0 === (r = e.tiles) ? [] : r
        , i = e.cb
        , a = e.optimalZoom
        , r = void 0 === (r = e.tags) ? [] : r
        , o = e.stamp;
      this.cN = a,
      this.fN[o] || (this.fN[o] = r);
      for (var s = 0; s < n.length; s++) {
          var u = n[s]
            , c = this.Zu(t);
          e.result = c,
          this.loadData(t, {
              tile: u,
              result: c,
              cb: i,
              optimalZoom: a,
              stamp: o,
              i: s
          })
      }
  }
  ,
  mRa.prototype.loadData = function(t, e) {
      var r = this
        , n = e.cb
        , i = e.tile
        , a = e.result
        , o = (e.optimalZoom,
      e.stamp)
        , s = e.i
        , u = a || this.Zu(t);
      switch (u.status) {
      case exports.qu.AllLoaded:
          n([]);
          break;
      case exports.qu.AllUnLoaded:
          var c = this.Yu(n, {
              tile: i,
              stamp: o,
              index: s
          });
          this.MI(u.Vu, function(t) {
              r.Xu[c] = t = void 0 === t ? {} : t,
              r.Hu()
          });
          break;
      case exports.qu.SomeLoading:
          var f = this.Yu(n, {
              tile: i,
              stamp: o,
              index: s
          });
          this.MI(u.Vu, function(t) {
              r.Xu[f] = t = void 0 === t ? {} : t,
              r.Hu()
          });
          break;
      case exports.qu.AllLoading:
          var l = this.Yu(n, {
              tile: i,
              stamp: o,
              index: s
          });
          this.Xu[l] = [],
          this.Hu()
      }
  }
  ,
  mRa.prototype.mz = function(t) {
      var e = this.info || {};
      return e[t] && (e = e[t]).pos && e.info[t] ? {
          key: t,
          index: exports.cY.dynamic,
          char: e.info[t],
          pos: e.pos
      } : null
  }
  ,
  mRa.prototype.measureText = function(t, e) {
      for (var r = CONSTS.ic, n = 0, i = this.info, a = e / this._size, o = this.nc, s = 0, u = t; s < u.length; s++) {
          var c = u[s]
            , f = void 0
            , l = c;
          (f = o.get(l)) || !i.hasOwnProperty(l) || (l = i[l].info[l]) && this.nc.set(c, f = l[4]),
          n += (f + r) * a
      }
      return n
  }
  ,
  mRa.prototype.Ju = function(t) {
      for (var e = {}, r = 0, n = t; r < n.length; r++) {
          var i = n[r]
            , a = i.range
            , o = i.info
            , s = i.pos;
          (i = this.info)[a],
          i[a] = {
              info: ((i = {})[a] = o,
              i),
              pos: s
          },
          this.range.push(a),
          e[a] = 1
      }
      return e
  }
  ,
  mRa.prototype.AI = function(t, e) {
      this.info[t] && (this.info[t].pos = e)
  }
  ,
  mRa.prototype.MI = function(e, r) {
      var n = this;
      void 0 === e && (e = []);
      for (var t = CONSTS.Mj, i = 0, a = e; i < a.length; i++) {
          var o = a[i];
          this._c[o] = !0
      }
      for (var s = [], u = 0, c = this.FU(e), f = c.UU, l = c.DU, h = l.length, d = Math.ceil(h / CONSTS.Mj); u < d; ) {
          var v = t * u
            , v = l.slice(v, h < v + t ? h : v + t)
            , v = this.xI(v);
          s.push(v),
          u++
      }
      s.push(this.pG(f)),
      Promise.all(s).then(function(t) {
          n.II(e),
          t = n.zU(t),
          n.Ju(t),
          r(t)
      })
  }
  ,
  mRa.prototype.pG = function(t) {
      var r = this;
      return new Promise(function(e) {
          r._parent.loadWordsByFront({
              Es: t,
              cb: function(t) {
                  e(t)
              }
          })
      }
      )
  }
  ,
  mRa.prototype.xI = function(t) {
      var a = this
        , e = this.fc() + ("/getsdfdata?chars=" + t.join(",").split(",").join("|"));
      return new Promise(function(n, i) {
          XHR.send(e, {
              Me: "json",
              method: "get",
              qw: function(t) {
                  var e, r;
                  t && t.info ? (e = a.vc(t.info),
                  r = new ImageDataWraper(e,t.url),
                  t.url = r,
                  n({
                      range: e,
                      info: t
                  })) : i(null)
              },
              error: function() {
                  i(null)
              }
          })
      }
      )
  }
  ,
  mRa.prototype.fc = function() {
      var t = CONSTS.pc
        , e = this.protocol + t[this.dc];
      return this.dc = (this.dc + 1) % t.length,
      e
  }
  ,
  mRa.prototype.vc = function(t) {
      void 0 === t && (t = {});
      var e = map(Object.keys(t), function(t) {
          return parseInt(t, 10)
      });
      return e.sort(function(t, e) {
          return t - e
      }),
      e = 2 <= (t = e.length) ? e[0] + "-" + e[t - 1] : 1 === t ? "" + e[0] : ""
  }
  ,
  mRa.prototype.gc = function(t) {
      var e = this.range || []
        , r = this.info || {};
      if (-1 !== e.indexOf(t))
          return !0;
      for (var n = parseInt(t, 10), i = 0, a = e; i < a.length; i++) {
          var o = a[i];
          if (o.indexOf("-") < 0) {
              if (n === +o && (r[o] && r[o].info || {})[t])
                  return !0
          } else {
              var s = o.split("-")
                , u = parseInt(s[0] || "", 10)
                , s = parseInt(s[1] || "", 10);
              if (u <= n && n <= s && (r[o] && r[o].info || {})[t])
                  return !0
          }
      }
      return !1
  }
  ,
  mRa.prototype.wc = function(t) {
      return this._c[t]
  }
  ,
  mRa.prototype.Zu = function(t) {
      for (var e = [], r = 0, n = 0, i = 0, a = t; i < a.length; i++) {
          var o = a[i];
          this.gc(o) || (this.wc(o) ? n += 1 : (r += 1,
          e.push(o)))
      }
      return 0 === n && 0 === r ? {
          status: exports.qu.AllLoaded,
          Vu: e
      } : 0 < r && 0 === n ? {
          status: exports.qu.AllUnLoaded,
          Vu: e
      } : 0 === r && 0 < n ? {
          status: exports.qu.AllLoading,
          Vu: e
      } : {
          status: exports.qu.SomeLoading,
          Vu: e
      }
  }
  ,
  mRa.prototype.Yu = function(t, e) {
      void 0 === e && (e = {});
      var r = this.yc += 1;
      return this.xc.push(r),
      this.bc[r] = t,
      this.bc[r] = {
          cb: t,
          params: e
      },
      r
  }
  ,
  mRa.prototype.Hu = function() {
      var t, e, r = this.xc[0];
      !r || (t = this.Xu[r]) && (this.xc.shift(),
      (e = this.bc[r]) ? e.cb(t) : console.error("sdf task error"),
      delete this.Xu[r],
      delete this.bc[r],
      this.Hu())
  }
  ,
  mRa.prototype.II = function(t) {
      for (var e = 0, r = t; e < r.length; e++) {
          var n = r[e];
          delete this._c[n]
      }
  }
  ,
  mRa.prototype.zU = function(t) {
      for (var e = [], r = 0, n = t = void 0 === t ? [] : t; r < n.length; r++) {
          var i = n[r];
          if (Array.isArray(i))
              for (var a = 0, o = i; a < o.length; a++) {
                  var s = o[a];
                  e.push(s)
              }
          else
              e.push(i)
      }
      return e
  }
  ,
  mRa), lRa, RTa;
  function mRa(t) {
      var e = lRa.call(this) || this;
      return e.CLASS_NAME = "SDFManagerWorker",
      e.protocol = "https",
      e.range = [],
      e.info = {},
      e.dc = 0,
      e._c = {},
      e._size = 24,
      e.nc = new AdaptorMap,
      e.xc = [],
      e.bc = {},
      e.Xu = {},
      e.yc = 1,
      e.fN = {},
      e.ac = t.z_,
      e._parent = t.parent,
      e
  }
  RTa = exports.vY || (exports.vY = {}),
  RTa[RTa.stop = 0] = "stop",
  RTa[RTa.finish = 1] = "finish",
  RTa[RTa.pause = 2] = "pause";
  var TaskManager = (STa = Event,
  __extends(TTa, STa),
  TTa.prototype.register = function(t, e, r) {
      if (this.CV[t])
          throw Error("TaskManager: Exist Task Creator");
      this.CV[t] = {
          PV: e,
          OV: r
      }
  }
  ,
  TTa.prototype.add = function(t, e) {
      if (!this.CV[t])
          throw Error("TaskManager: Not Exist Task Type");
      var r = this.CV[t]
        , t = this.id++
        , e = r.PV(e);
      return this.LV.push({
          UQ: e,
          OV: {
              id: t,
              kY: r.OV.kY
          }
      }),
      t
  }
  ,
  TTa.prototype.XQ = function(t, e, r) {
      void 0 === e && (e = {
          kY: 1 / 0
      }),
      void 0 === r && (r = !1);
      var n = this.id++;
      return r ? this.LV.unshift({
          UQ: t,
          OV: {
              id: this.id++,
              kY: e.kY
          }
      }) : this.LV.push({
          UQ: t,
          OV: {
              id: this.id++,
              kY: e.kY
          }
      }),
      n
  }
  ,
  TTa.prototype.exec = function(t) {
      this.jV();
      for (var e = t, r = Date.now(); 0 < e; ) {
          var n = this.LV.shift();
          if (!n)
              break;
          var i = n.UQ.play(e);
          n.UQ.status === exports.vY.finish ? this.emit("task:" + n.OV.id, {
              data: i
          }) : this.LV.unshift(n),
          e = t - (Date.now() - r),
          0 === this.LV.length && this.emit("taskclear", !0)
      }
  }
  ,
  TTa.prototype.xY = function() {
      return 0 < this.LV.length
  }
  ,
  TTa.prototype.destroy = function() {
      this.LV = []
  }
  ,
  TTa.prototype.clear = function(e) {
      this.LV = e ? this.LV.filter(function(t) {
          return t.UQ.type === e
      }) : []
  }
  ,
  TTa.prototype.jV = function() {
      this.LV.sort(function(t, e) {
          return t.OV.kY - e.OV.kY
      })
  }
  ,
  TTa), STa;
  function TTa() {
      var t = null !== STa && STa.apply(this, arguments) || this;
      return t.id = 0,
      t.LV = [],
      t._V = {},
      t.CV = {},
      t
  }
  var Actor = (oUa.prototype.send = function(t, e, r, n) {
      var i = this
        , a = r ? this.dI + ":" + this.bI : null;
      this.bI += 2,
      r && a && (this.pI[a] = r);
      var o = []
        , s = serialize(e, o);
      if (this.target.postMessage({
          yI: n,
          mI: this.dI,
          type: t,
          id: String(a),
          data: s
      }, o),
      r)
          return {
              cancel: function() {
                  i.target.postMessage({
                      yI: n,
                      mI: i.dI,
                      type: "<cancel>",
                      id: String(a),
                      key: e.ya
                  }),
                  a && delete i.pI[a]
              }
          }
  }
  ,
  oUa.prototype.gI = function(t) {
      var n = this;
      Browser.DW && "destroy" === t.data.type && self.close();
      var i, e, a = (t = t.data).id;
      t.yI && this.dI !== t.yI || ("<cancel>" === t.type ? (e = this.pI[t.id],
      delete this.pI[t.id],
      e && e("<cancel>")) : "<response>" === t.type ? (e = this.pI[t.id],
      delete this.pI[t.id],
      e && t.error ? e(deserialize(t.error)) : e && e(null, deserialize(t.data))) : void 0 !== t.id && this.parent[t.type] && (i = function(t, e) {
          delete n.pI[a];
          var r = []
            , e = serialize(e, r);
          n.target.postMessage({
              mI: n.dI,
              type: "<response>",
              id: String(a),
              error: t ? serialize(t) : null,
              data: e
          }, r),
          i = void 0
      }
      ,
      this.pI[t.id] = null,
      (e = this.parent[t.type](t.mI, deserialize(t.data), i)) && null === this.pI[t.id] && (this.pI[t.id] = e.cancel)))
  }
  ,
  oUa.prototype.remove = function() {
      this.target.removeEventListener("message", this.gI, !1)
  }
  ,
  oUa);
  function oUa(t, e, r) {
      this.UD = !1,
      this.gI = this.gI.bind(this),
      this.target = t,
      this.parent = e,
      this.dI = r,
      this.pI = {},
      this.bI = Browser.DW ? 1 : 0,
      this.target.addEventListener("message", this.gI, !1)
  }
  var TaskPool = (MUa.prototype.nS = function(r, t) {
      var n = this;
      return this.SN[r] = !0,
      this.listener[r] || (this.listener[r] = []),
      t(function(t, e) {
          n.$N(r, t, e)
      })
  }
  ,
  MUa.prototype.cancel = function(t) {
      delete this.SN[t]
  }
  ,
  MUa.prototype.has = function(t) {
      return Boolean(this.SN[t])
  }
  ,
  MUa.prototype.GN = function(t) {
      return this.listener[t] && 0 < this.listener[t].length
  }
  ,
  MUa.prototype.SH = function(t, e) {
      this.listener[t] || (this.listener[t] = []),
      this.listener[t].push(e)
  }
  ,
  MUa.prototype.kN = function(t, e) {
      !this.listener[t] || -1 < (e = this.listener[t].indexOf(e)) && this.listener[t].splice(e, 1)
  }
  ,
  MUa.prototype.$N = function(t, e, r) {
      delete this.SN[t];
      var n = this.listener[t];
      if (delete this.listener[t],
      n)
          for (var i = 0, a = n; i < a.length; i++)
              (0,
              a[i])(e, r)
  }
  ,
  MUa);
  function MUa() {
      this.listener = {},
      this.SN = {}
  }
  var StaticSDFManagerWorker = (fVa.prototype.loadData = function(t, o, r) {
      var s = this
        , u = staticSDFTileKeyToKey(t);
      if (!u)
          return console.log("!key"),
          r(null, [void 0, null]),
          {
              cancel: noop$1
          };
      var c = this.fc()
        , f = c + u + ".json"
        , l = c + u + (o.mH ? ".webp" : ".png")
        , n = this.parent.protocol;
      if (void 0 !== this._N[u] && void 0 !== this.NN[u])
          return r(null, [this._N[u], this.NN[u]]),
          {
              cancel: noop$1
          };
      function h(t, e) {
          e && (e.protocol = n),
          r(t, e)
      }
      var e = this.LN.has(u);
      return this.LN.SH(u, h),
      e ? {
          cancel: function() {
              s.NW(t)
          }
      } : this.LN.nS(u, function(r) {
          function n(t, e) {
              r(null, e)
          }
          var i = 0
            , a = []
            , t = s.ON(f, function(t, e) {
              t ? "404" !== t ? (console.log(t),
              n(0, null)) : (a[0] = e ? {} : null,
              s._N[u] = a[0],
              2 == ++i && n(0, a)) : (a[0] = e,
              s._N[u] = e,
              2 == ++i && n(0, a))
          })
            , e = s.IN(l, function(t, e) {
              if (t || !e)
                  "404" !== t ? (console.log(t),
                  n(0, e)) : (a[1] = null,
                  s.NN[u] = a[1],
                  2 == ++i && n(0, a));
              else if (!e || e.byteLength < 128)
                  a[1] = null,
                  s.NN[u] = a[1],
                  2 == ++i && n(0, a);
              else if (o.imageBitmap)
                  ImageDataWraper.AV(e).then(function(t) {
                      return "success" !== (t = new ImageDataWraper(l,t,{
                          imageBitmap: !0
                      })).status ? (console.log("createObjectURL fail"),
                      void r("createObjectURL fail", null)) : (a[1] = t,
                      s.NN[u] = t,
                      void (2 == ++i && n(0, a)))
                  });
              else {
                  if ("success" !== (e = new ImageDataWraper(c,e)).status)
                      return console.log("createObjectURL fail"),
                      void n(0, null);
                  a[1] = e,
                  s.NN[u] = e,
                  2 == ++i && n(0, a)
              }
          });
          return "lesszoom10" !== u ? {
              cancel: function() {
                  s.LN.kN(u, h),
                  s.LN.GN(u) || (t.abort(),
                  e.abort(),
                  s.LN.cancel(u)),
                  h("cancel", null)
              }
          } : {
              cancel: function() {
                  s.LN.kN(u, h),
                  h("cancel", null)
              }
          }
      })
  }
  ,
  fVa.prototype.NW = function(t) {
      var e = this.NN[t];
      e && e.destroy(),
      delete this.NN[t],
      delete this._N[t]
  }
  ,
  fVa.prototype.zW = function(t) {
      this._N = {},
      this.NN = {},
      this.jN = ["://glyph.amap.com/sdf" + t + "/", "://glyph01.amap.com/sdf" + t + "/", "://glyph02.amap.com/sdf" + t + "/", "://glyph03.amap.com/sdf" + t + "/", "://glyph04.amap.com/sdf" + t + "/"]
  }
  ,
  fVa.prototype.ON = function(t, e) {
      return this.CN.send(t, {
          Me: "json",
          method: "get",
          qw: function(t) {
              e(null, t || null)
          },
          Aw: function(t) {
              e(t && t.message || "unknown error")
          }
      })
  }
  ,
  fVa.prototype.IN = function(t, e) {
      return this.CN.send(t, {
          Me: "arraybuffer",
          method: "get",
          qw: function(t) {
              t ? e(null, t) : e("empty data", null)
          },
          Aw: function(t) {
              e(t && t.message || "unknown error")
          }
      })
  }
  ,
  fVa.prototype.fc = function() {
      this.EN = this.EN % this.jN.length;
      var t = this.parent.protocol + this.jN[this.EN];
      return this.EN++,
      t
  }
  ,
  fVa);
  function fVa(t, e) {
      this.parent = t,
      this.CN = e,
      this.jN = [],
      this.EN = 0,
      this._N = {},
      this.NN = {},
      this.LN = new TaskPool,
      this.zW(this.parent.GW.db),
      this.parent.Uh.send("updateDataVersion", this.parent.GW.nebulaVersion)
  }
  var emptyObj = {}
    , SDFStaticTextureCache = ($Va.prototype.xH = function(t, e) {
      void 0 === e && (e = !1);
      var r = staticSDFTileKeyToKey(t)
        , n = this.RN[r];
      if (e) {
          if (!n)
              return;
          n.indexOf(t) < 0 && n.push(t)
      }
      return this.DN.getImage(r)
  }
  ,
  $Va.prototype.LB = function(t) {
      return t = staticSDFTileKeyToKey(t),
      this.XN[t] || emptyObj
  }
  ,
  $Va.prototype.bH = function(n, i, a, o) {
      var t, s = this, u = staticSDFTileKeyToKey(n);
      i.type === ImageDataWraperType.bitmap ? i.IV ? (t = this.DN.getImage(i.hash),
      o(null, t)) : this.DN.addImageBitmap(i.data, {
          url: u,
          cb: function(t, e) {
              var r;
              t || (i.destroy(),
              s.RN[u] || (s.RN[u] = [],
              s.XN[u] = a),
              (r = s.RN[u]).indexOf(n) < 0 && r.push(n)),
              o(t, e)
          }
      }) : this.DN.addImage(u, {
          url: i.data,
          cb: function(t, e) {
              var r;
              t || (s.RN[u] || (s.RN[u] = [],
              s.XN[u] = a),
              (r = s.RN[u]).indexOf(n) < 0 && r.push(n)),
              o(t, e)
          }
      })
  }
  ,
  $Va.prototype.kH = function(t) {
      var e = staticSDFTileKeyToKey(t)
        , r = this.RN[e];
      r ? (0 <= (t = r.indexOf(t)) && r.splice(t, 1),
      0 === r.length && (this.DN.RH(e),
      this.UN.deleteTileStaticSDF(e),
      delete this.RN[e],
      delete this.XN[e])) : delete this.XN[e]
  }
  ,
  $Va);
  function $Va(t, e, r) {
      this.parent = t,
      this.DN = e,
      this.UN = r,
      this.RN = {},
      this.XN = {}
  }
  var RenderThread = (AWa.prototype.Yf = function() {
      this.Yv || (0 < this.Jv && this.Kv ? (this.render(),
      this.Qv = Util.requestAnimFrame(this.Yf.bind(this))) : (this.Jv <= 0 || !this.Kv) && (this.Kv = !1,
      Util.cancelAnimFrame(this.Qv),
      this.Qv = 0,
      this.Qv || this.check() && (this.render(),
      this.setNeedUpdate(!0))),
      this.Jv--)
  }
  ,
  AWa.prototype.setNeedUpdate = function(t) {
      this.Jv = 5,
      t && !this.Kv && (this.Kv = t,
      Util.cancelAnimFrame(this.Qv),
      this.Qv = 0,
      this.to()),
      this.Kv = t
  }
  ,
  AWa.prototype.to = function() {
      this.Qv || (this.Qv = Util.requestAnimFrame(this.Yf.bind(this)))
  }
  ,
  AWa.prototype.destroy = function() {
      this.Yv = !0
  }
  ,
  AWa);
  function AWa(t) {
      this.Jv = 5,
      this.Qv = 0,
      this.Yv = !1,
      this.render = t.render,
      this.check = t.check
  }
  Uint8Array.prototype.fill || (Uint8Array.prototype.fill = Array.prototype.fill),
  Float32Array.prototype.slice || Object.defineProperty(Float32Array.prototype, "slice", {
      value: function(t, e) {
          return new Float32Array(Array.prototype.slice.call(this, t, e))
      }
  }),
  Float64Array.prototype.slice || Object.defineProperty(Float64Array.prototype, "slice", {
      value: function(t, e) {
          return new Float64Array(Array.prototype.slice.call(this, t, e))
      }
  }),
  exports.Ge = AMapStyleSource,
  exports.Bh = Actor,
  exports.OZ = AdaptorMap,
  exports.bb = BezierUtil,
  exports.tc = CONSTS,
  exports._n = Color,
  exports.ZQ = ComputeTileRange,
  exports.hL = Coordinate,
  exports.PY = DangerousFontSize,
  exports.La = DynamicVertice,
  exports.Event = Event,
  exports.iz = FillExtrusionBucket,
  exports.GeometryUtil = GeometryUtil,
  exports.rW = GeometryUtilCls,
  exports.x_ = HALF_WORLD_SIZE,
  exports.WQ = ImageDataWraper,
  exports.pZ = InnerClass,
  exports.eG = Labels,
  exports.LabelsRenderUtil = LabelsRenderUtil,
  exports.bG = LangManager,
  exports.LngLat = LngLat$2,
  exports.ZY = LngLat2TileInnerCoord,
  exports.za = LocalTileZoom,
  exports.Ra = LocalZoom,
  exports.MapboxLabelFormat = MapboxLabelFormat,
  exports.fQ = MapboxSegements,
  exports.bX = MapboxVTSourceWorker,
  exports.Module = Module,
  exports.NebulaLabelFormat = NebulaLabelFormat,
  exports._w = NebulaSegements,
  exports.pa = NebulaTile,
  exports.wa = NebulaTileCoord,
  exports.pw = Pbf,
  exports.Pixel = Pixel,
  exports.PlaneGeometryUtil = PlaneGeometryUtil,
  exports.kS = PlaneGeometryUtilInstance,
  exports.K_ = PolygonBucket,
  exports.oE = PolygonSegements,
  exports.J_ = PolylineBucket,
  exports.ProjectionManager = ProjectionManager,
  exports.tS = Queue,
  exports.Vs = RasterTile,
  exports.wY = RenderThread,
  exports.vG = SDFManagerBase,
  exports.jb = SDFManagerWorker,
  exports.LH = SDFStaticTextureCache,
  exports.e0 = SimpleCircleBucket,
  exports.Size = Size,
  exports.yp = SmartArrayBuffer,
  exports.xW = StaticSDFManagerWorker,
  exports.StyleParser = StyleParser,
  exports.Support = Browser,
  exports.vH = Task,
  exports.MY = TaskManager,
  exports.IH = TaskPool,
  exports.Gh = Tile,
  exports.ca = TileCoord,
  exports.V = transform,
  exports.Util = Util,
  exports.Sw = VectorTile,
  exports.tW = VectorTile$1,
  exports.LW = VectorTileSegements,
  exports.Yw = XHR,
  exports.dZ = __decorate,
  exports.Ei = __extends,
  exports.Pt = __spreadArrays,
  exports.assign = assign,
  exports.jw = calcTileMectorBounds,
  exports.clone = clone,
  exports.Ex = clone$1,
  exports.yn = cloneDeep,
  exports.create = create$3,
  exports.Il = create,
  exports.Dl = create$1,
  exports.Zl = create$2,
  exports.CZ = decodeStyle,
  exports.KQ = decodeTiles,
  exports.equals = equals$1,
  exports.Ru = equals,
  exports.every = every,
  exports.extend = extend,
  exports.filter = filter,
  exports.find = find,
  exports.findIndex = findIndex,
  exports.forEach = forEach,
  exports.vx = forIn,
  exports.Bu = fromValues$2,
  exports.xd = fromValues$3,
  exports.$Q = getMVTTileBbox,
  exports.vZ = getOutseaData,
  exports.Ol = getTranslation,
  exports.Ul = invert,
  exports.VB = isBezierCurve,
  exports.xs = isBounds,
  exports.sB = isCircleMarker,
  exports.isEmpty = isEmpty,
  exports.isEqual = isEqual,
  exports.isFunction = isFunction,
  exports.qG = isInnerLabelsLayer,
  exports.px = isLayer,
  exports.Bs = isLngLat,
  exports.iL = isLnglatLikeArray,
  exports.eL = isLnglatLikeArrayArray,
  exports.yL = isLnglatLikeArrayArrayArray,
  exports.vB = isNumber,
  exports.ys = isNumberArrayArray,
  exports.Ox = isNumberArrayArrayArray,
  exports.tL = isNumberArrayArrayArrayArray,
  exports.er = isOverlay,
  exports.RF = isOverlayGroup,
  exports.oy = isPixel,
  exports.GB = isPolyline,
  exports.ay = isSize,
  exports.FF = isVectorLayer,
  exports.jsonLngLatData = jsonLngLatData,
  exports.keys = keys,
  exports.labelsUtil = labelsUtil,
  exports.lcs = lcs,
  exports.lookAt = lookAt,
  exports.map = map,
  exports.multiply = multiply,
  exports.ou = ortho,
  exports.parseLngLatData = parseLngLatData,
  exports.perspective = perspective,
  exports.rbush = _rbush_2_0_2_rbush,
  exports.scale = scale$1,
  exports.set = set$1,
  exports.Pl = set,
  exports.some = some,
  exports.XY = tileInnerCoord2LngLat,
  exports.Gu = transformMat4,
  exports.vector = vector,
  exports.zoomRange = zoomRange
}
)(sharedChunk);
(function(polyfill) {
  var _a, geoUtil = new polyfill.rW({}), LabelFormatMap = (_a = {},
  _a[polyfill.NebulaLabelFormat.id] = polyfill.NebulaLabelFormat,
  _a.nebula = polyfill.NebulaLabelFormat,
  _a[polyfill.MapboxLabelFormat.id] = polyfill.MapboxLabelFormat,
  _a), NebulaSourceWorker = (a = polyfill.Event,
  polyfill.Ei(b, a),
  b.prototype.bind = function() {
      var c = this;
      this.on("styleReady", function() {
          var A = c.xQ.length;
          if (0 < A) {
              for (var i = 0; i < A; i++) {
                  var g = (l = c.xQ[i]).data
                    , I = l.projectionId
                    , t = l.zoom
                    , B = l.viewMode
                    , Q = l.showBuildingBlock
                    , C = l.mS
                    , e = l.optimalZoom
                    , o = l.ZL
                    , E = l.cb
                    , h = l.url;
                  c.pQ(g, I, t, B, Q, C, e, o, E, h)
              }
              c.xQ = []
          }
          var a = c.bQ.length;
          if (0 < a) {
              for (i = 0; i < a; i++) {
                  var l, n = (l = c.bQ[i]).CD, r = l.cQ, g = l.data, I = l.projectionId, E = l.cb, s = l.UQ, w = l.mH, o = l.ZL;
                  c.mQ(n, r, g, I, E, s, w, o)
              }
              c.bQ = []
          }
      })
  }
  ,
  b.prototype.bw = function(g, A, I, t, B, i, Q, C, e, o, E, h, a) {
      var l = this;
      if (void 0 === a && (a = !0),
      polyfill.Support.wasm && a) {
          if (!this.parent.PW)
              return void h("not init");
          a = A.join(";"),
          a = this.parent.PW.transform('["' + a + '","' + E + '"]'),
          g = g + ("?key=" + this.parent.key) + "&msg=" + a
      } else
          g = g + ("?key=" + this.parent.key) + "&flds=" + E + "&t=" + A.join(";");
      return g += "&p=3",
      makeFetchRequest(this.parent.Uh, g, function(A, i) {
          A ? h(A) : setTimeout(function() {
              l.pQ(i, B, I, C, e, Q, t, o, h, g)
          }, 10)
      })
  }
  ,
  b.prototype.pQ = function(A, g, I, t, B, Q, C, i, e, o) {
      var E = this;
      if (this.parent.vn && this.parent.vn._Q()) {
          polyfill.Support.amapRunTime && (polyfill.Support.amapRunTime["data-decode-begin"] || (polyfill.Support.amapRunTime["data-decode-begin"] = (new Date).getTime()));
          var rawData = new Uint8Array(A);
          var h = polyfill.KQ(rawData)
            , a = [];
          polyfill.forEach(h.tiles, function(A) {
              var i = new polyfill.Gh(new polyfill.ca(A.z,A.x,A.y));
              i.data = E.kw(A, g, i),
              E.xw(i, I),
              E.zw(i, I, t, B),
              E.nz(i, Q, C),
              A = polyfill.Util.pW(A.t),
              a.push({
                  zo: i.zo,
                  ba: i.data,
                  tag: A,
                  version: h.version || ""
              })
          });
          for (var l = [], n = this.parent.vn, r = void 0, s = 0, w = a; s < w.length; s++) {
              var c = w[s];
              if (c && c.ba) {
                  if (c.ba.road) {
                      for (var y = [], x = 0, d = c.ba.road; x < d.length; x++) {
                          var p = d[x]
                            , r = (r = n.dn(p.Fp, p.Ep, i)) ? r[1] : null;
                          p.id && r && r.fontSize && r.faceColor && (delete p.gw,
                          y.push({
                              path: p.path,
                              id: p.id
                          }))
                      }
                      c.ba.road = y
                  }
                  delete c.ba.poilabel,
                  delete c.ba.region,
                  delete c.ba.building,
                  delete c.ba.Mw
              }
              l.push(c)
          }
          polyfill.Support.amapRunTime && (polyfill.Support.amapRunTime["data-decode-end"] || (polyfill.Support.amapRunTime["data-decode-end"] = (new Date).getTime())),
          e(null, {
              nebulaDatas: l,
              amapRunTime: polyfill.Support.amapRunTime,
              rawData: rawData
          })
      } else
          this.xQ.push({
              data: A,
              projectionId: g,
              zoom: I,
              viewMode: t,
              showBuildingBlock: B,
              mS: Q,
              optimalZoom: C,
              ZL: i,
              cb: e,
              url: o
          })
  }
  ,
  b.prototype.mQ = function(A, i, g, I, t, B, Q, C) {
      this.parent.vn ? this.HQ(g, i, I, A, B, Q, C, t) : this.bQ.push({
          CD: A,
          cQ: i,
          data: g,
          projectionId: I,
          cb: t,
          UQ: B,
          mH: Q,
          ZL: C
      })
  }
  ,
  b.prototype.bW = function(A, g, I, t, B, Q) {
      var C = this;
      if (polyfill.Support.wasm) {
          if (!this.parent.PW)
              return void Q("not init");
          var i = g.join(";")
            , i = this.parent.PW.transform('["' + i + '","poi,roadname"]');
          A = A + ("?key=" + this.parent.key) + "&msg=" + i
      } else
          A = A + ("?key=" + this.parent.key) + "&flds=poi,roadname&t=" + g.join(";");
      A += "&p=3",
      this.WW = t;
      var e = -1 !== A.indexOf("/oversea")
        , o = new polyfill.vH;
      return o._H(makeFetchRequest(this.parent.Uh, A, function(A, i) {
          A ? Q(A) : setTimeout(function() {
              C.mQ(g, e, i, I, Q, o, B, t)
          }, 10)
      })),
      {
          cancel: o.cancel
      }
  }
  ,
  b.prototype.HQ = function(A, i, g, I, t, B, Q, C) {
      var e = this
        , o = polyfill.KQ(new Uint8Array(A));
      !i && o.version && this.parent.GW.nebulaVersion !== o.version && (this.parent.GW.nebulaVersion = o.version,
      this.parent.GW.db = o.db,
      this.parent.IW.zW(this.parent.GW.db),
      this.parent.Uh.send("updateDataVersion", this.parent.GW.nebulaVersion));
      var E = [];
      polyfill.forEach(o.tiles, function(A) {
          var i = new polyfill.Gh(new polyfill.ca(A.z,A.x,A.y));
          i.data = e.kw(A, g, i),
          A = polyfill.Util.pW(A.t),
          E.push({
              zo: i.zo,
              ba: i.data,
              tag: A
          })
      });
      for (var h = [], a = 0, l = E; a < l.length; a++) {
          var n, r, s = l[a];
          s && s.ba && (n = s.ba.roadName,
          r = s.ba.poilabel,
          delete s.ba.poilabel,
          delete s.ba.Mw,
          h.push({
              zo: s.zo,
              ba: {
                  roadName: n,
                  poilabel: r
              },
              tag: s.tag,
              version: o.version || ""
          }))
      }
      if (h.length) {
          for (var w = {}, c = 0, y = h; c < y.length; c++) {
              var x = y[c]
                , d = new polyfill.Gh(x.zo)
                , p = polyfill.wa.ga(d.zo.x, d.zo.y, d.zo.z, "EPSG:3857");
              d.type = "nebula",
              i && (d.cQ = !0),
              p = polyfill.lcs.getLocalByCoord([p[0], p[1]]),
              d.localCoord = p,
              d.data = x.ba,
              (p = this.parent.params).showLabel,
              p = p.scale,
              x = x.tag,
              this.sQ[d.zo.key + "," + x] = {
                  tile: d,
                  params: {
                      scale: p,
                      tag: x
                  }
              },
              w[d.zo.key + "," + polyfill.Util.SD(x)] = !0
          }
          C(null, w)
      }
  }
  ,
  b.prototype.OW = function(A) {
      this.parent.Zw ? this.on("once", A) : A()
  }
  ,
  b.prototype.YE = function(A, i) {
      polyfill.map(polyfill.ZQ.ha(i.bounds, polyfill.ZQ.ra(i.zoom)), function(A) {
          return A.join(",")
      });
      var g = this.sQ
        , i = polyfill.Util.getOptimalZoom(this.WW);
      A(g, {
          ZL: this.WW,
          optimalZoom: i,
          cb: function() {}
      }),
      this.sQ = {}
  }
  ,
  b.prototype.kw = function(A, i, g) {
      var n = this
        , I = {}
        , r = polyfill.ProjectionManager.getProjection(i)
        , i = polyfill.wa.ga(A.x, A.y, A.z, "EPSG:3857")
        , s = polyfill.lcs.getLocalByCoord([i[0], i[1]]).center;
      g.Mw = s,
      g.Ro = i;
      var w = g.zo.z;
      return polyfill.forEach(A.layers, function(h) {
          var A, a = [], l = b.Wa[h.type];
          polyfill.forEach(h.d[l], function(o) {
              o.items.sort(n.A0);
              var E = n.parent.vn.mW(o.mainkey, o.subkey, w);
              polyfill.forEach(o.items, function(A) {
                  switch (l) {
                  case "road":
                      for (var i = 0; i < A.path.length; i += 2) {
                          var g = A.path[i]
                            , I = A.path[i + 1]
                            , t = polyfill.XY(h, o.resolution, g, I)
                            , t = r.project(t[0], t[1]);
                          w >= polyfill.Ra && (t[0] -= s[0],
                          t[1] -= s[1]),
                          A.path[i] = t[0],
                          A.path[i + 1] = t[1]
                      }
                      break;
                  case "region":
                      for (var B = A.path, Q = 0; Q < B.length; Q += 1) {
                          for (var C = B[Q].path, e = [], i = 0; i < C.length; i += 2)
                              g = C[i],
                              I = C[i + 1],
                              t = polyfill.XY(h, o.resolution, g, I),
                              e[i] = t[0],
                              e[i + 1] = t[1],
                              t = r.project(t[0], t[1]),
                              w >= polyfill.Ra && (t[0] -= s[0],
                              t[1] -= s[1]),
                              C[i] = t[0],
                              C[i + 1] = t[1];
                          B[Q] = C
                      }
                      break;
                  case "building":
                      for (B = A.path,
                      A.oW = [],
                      Q = 0; Q < B.length; Q += 1) {
                          for (C = B[Q].path,
                          e = [],
                          i = 0; i < C.length; i += 2)
                              g = C[i],
                              I = C[i + 1],
                              t = polyfill.XY(h, o.resolution, g, I),
                              e[i] = t[0],
                              e[i + 1] = t[1],
                              t = r.project(t[0], t[1]),
                              w >= polyfill.Ra && (t[0] -= s[0],
                              t[1] -= s[1]),
                              C[i] = t[0],
                              C[i + 1] = t[1];
                          B[Q] = C,
                          A.oW[Q] = e
                      }
                      break;
                  case "poilabel":
                  case "roadName":
                      if (A.pos && (e = polyfill.XY(h, o.resolution, A.pos[0], A.pos[1]),
                      A.pos = r.project(e[0], e[1])),
                      A.path) {
                          if (A.shield) {
                              e = polyfill.XY(h, o.resolution, A.path[0], A.path[1]),
                              t = r.project(e[0], e[1]),
                              w >= polyfill.Ra && (t[0] -= s[0],
                              t[1] -= s[1]),
                              A.path[0] = t[0],
                              A.path[1] = t[1];
                              break
                          }
                          for (i = 0; i < A.path.length; i += 2)
                              g = A.path[i],
                              I = A.path[i + 1],
                              t = polyfill.XY(h, o.resolution, g, I),
                              t = r.project(t[0], t[1]),
                              w >= polyfill.Ra && (t[0] -= s[0],
                              t[1] -= s[1]),
                              A.path[i] = t[0],
                              A.path[i + 1] = t[1]
                      }
                  }
                  A.du = o.resolution,
                  A.Fp = o.mainkey,
                  A.Ep = o.subkey,
                  A.zIndex = n.parent.vn.Lw(o.mainkey, o.subkey),
                  A.lineCap = E[0],
                  A.RQ = E[1],
                  A.gw = {
                      z: h.z,
                      y: h.y,
                      x: h.x
                  },
                  a.push(A)
              })
          }),
          "poilabel" !== l ? n.Tw(a) : n.Na(a),
          "poilabel" === l ? (A = h.z + "-" + h.x + "-" + h.y,
          I[l] ? I[l][A] ? I[l][A].push.apply(I[l][A], a) : I[l][A] = a : (I[l] = {},
          I[l][A] = a)) : I[l] ? I[l].push.apply(I[l], a) : I[l] = a
      }),
      I.Mw = s,
      I
  }
  ,
  b.prototype.A0 = function(A, i) {
      return A.minzoom - i.minzoom || A.maxzoom - i.maxzoom
  }
  ,
  b.prototype.Tw = function(A) {
      return A.sort(function(A, i) {
          return A.zIndex - i.zIndex
      }),
      A
  }
  ,
  b.prototype.Na = function(A) {
      return A.sort(function(A, i) {
          return A.rank - i.rank
      }),
      A
  }
  ,
  b.prototype.xw = function(A, i) {
      var g = A.data
        , I = new polyfill._w;
      if (g.Uc = I,
      !g.$c) {
          g.$c = new polyfill.J_,
          g.road = g.road || [];
          var t = A.Mw.slice(0);
          if (A.zo.z <= polyfill.za && (t[0] = 0,
          t[1] = 0),
          g.road.push({
              name: "",
              rank: 1,
              maxzoom: polyfill.zoomRange[1],
              minzoom: polyfill.zoomRange[0],
              path: [A.Ro[0] - t[0], A.Ro[1] - t[1], A.Ro[2] - t[0], A.Ro[1] - t[1], A.Ro[2] - t[0], A.Ro[3] - t[1], A.Ro[0] - t[0], A.Ro[3] - t[1], A.Ro[0] - t[0], A.Ro[1] - t[1]],
              Fp: -2,
              Ep: -2,
              shield: "",
              shieldType: 0,
              du: 13,
              lineCap: "butt",
              RQ: "butt"
          }),
          g.road)
              for (var B = 0, Q = g.road; B < Q.length; B++) {
                  var C = Q[B]
                    , e = C.path
                    , e = (o = g.$c.hb(e, {
                      X_: "butt" === C.lineCap ? 0 : .9,
                      lineCap: C.lineCap,
                      lineJoin: "auto"
                  })).Iw
                    , o = o.distance;
                  0 < e && (I.add(C.Fp, C.Ep, e, C.minzoom, C.maxzoom),
                  C.distance = o)
              }
      }
  }
  ,
  b.prototype.zw = function(A, i, g, I) {
      var t = A.data
        , B = new polyfill._w;
      if (t.Oc = B,
      t.Fc = new polyfill._w,
      !t.Dc) {
          t.Dc = new polyfill.K_,
          t.region = t.region || [];
          var Q = A.Mw.slice(0);
          if (A.zo.z <= polyfill.za && (Q[0] = 0,
          Q[1] = 0),
          t.region.unshift({
              maxzoom: polyfill.zoomRange[1],
              minzoom: polyfill.zoomRange[0],
              path: [[A.Ro[0] - Q[0], A.Ro[1] - Q[1], A.Ro[2] - Q[0], A.Ro[1] - Q[1], A.Ro[2] - Q[0], A.Ro[3] - Q[1], A.Ro[0] - Q[0], A.Ro[3] - Q[1], A.Ro[0] - Q[0], A.Ro[1] - Q[1]]],
              Fp: 30001,
              Ep: 1
          }),
          t.region)
              for (var C = 0, e = t.region; C < e.length; C++)
                  for (var o = e[C], E = 0, h = o.path; E < h.length; E++)
                      (v = h[E]).push(v[0], v[1]),
                      0 < (M = t.Dc.Nx(v)) && B.add(o.Fp, o.Ep, M, o.minzoom, o.maxzoom);
          if (!I && t.building) {
              if (t.FD)
                  return;
              t.FD = new polyfill.K_,
              t.BD = new polyfill._w;
              for (var a = t.BD, l = 0, n = t.building; l < n.length; l++) {
                  var r = n[l]
                    , w = (s = polyfill.jw(r.gw.z, r.gw.x, r.gw.y))[0]
                    , c = s[1]
                    , y = s[2]
                    , s = s[3];
                  A.Mw && (w -= A.Mw[0],
                  y -= A.Mw[0],
                  c -= A.Mw[1],
                  s -= A.Mw[1]);
                  for (var x = Math.floor(w), d = Math.floor(y), p = Math.floor(c), D = Math.floor(s), f = 0, R = r.path; f < R.length; f++) {
                      var v = R[f];
                      0 < (M = t.FD.Nx(v)) && a.add(r.Fp, r.Ep, M, r.minzoom, r.maxzoom, r.ew || "indoor_out_building")
                  }
                  for (var u = 0, G = r.path; u < G.length; u++) {
                      var S = G[u];
                      S.push(S[0], S[1]);
                      for (var v = [], b = 0, F = S.length; b < F - 2; b += 2)
                          v.push(polyfill.xd(S[b], S[b + 1])),
                          v.push(polyfill.xd(S[b + 2], S[b + 3]));
                      for (var k = [], b = 0, F = v.length; b < F; b += 2) {
                          var M, Y = v[b][0], N = v[b][1], J = v[b + 1][0], U = v[b + 1][1], L = Math.floor(Y), H = Math.floor(N);
                          (Y !== J || L !== x && L !== d) && (N !== U || H !== p && H !== D) ? k.push(v[b], v[b + 1]) : (0 < (M = t.Dc.Ew(k)) && t.Fc.add(r.Fp, r.Ep, M, r.minzoom, r.maxzoom, r.ew || "indoor_out_building"),
                          k = [])
                      }
                      0 < k.length && 0 < (M = t.Dc.Ew(k)) && t.Fc.add(r.Fp, r.Ep, M, r.minzoom, r.maxzoom, r.ew)
                  }
              }
          }
          if (t.building) {
              for (var K = [], m = 0, q = t.building; m < q.length; m++)
                  if ((r = q[m]).ew)
                      if (-1 < r.ew.indexOf("|"))
                          for (var Z = r.ew.split("|"), b = 0; b < Z.length; b++)
                              K.push(Z[b]);
                      else
                          K.push(r.ew);
              t.indoorInfo || (t.indoorInfo = []),
              t.indoorInfo = K
          }
      }
  }
  ,
  b.prototype.nz = function(A, i, g) {
      void 0 === i && (i = {});
      var I = A.data;
      if (I.C_ = new polyfill._w,
      !I.A_) {
          I.A_ = new polyfill.iz;
          var t = i.hideWithoutStyle
            , B = i.areas;
          if (I.building)
              for (var Q = 0, C = I.building; Q < C.length; Q++)
                  for (var e = C[Q], o = 0; o < e.path.length; o++) {
                      var E = e.path[o]
                        , h = e.oW[o];
                      E.push(E[0], E[1]),
                      h.push(h[0], h[1]);
                      for (var a = [], l = 0; l < h.length; l += 2)
                          a.push([h[l], h[l + 1]]);
                      if (B) {
                          for (var n, r = !1, s = !1, w = {}, c = 0; c < B.length; c++) {
                              var y = B[c]
                                , x = y.path;
                              geoUtil.isRingInRing(a, x) && (r = !0,
                              !y.visible && void 0 !== y.visible || (s = !0,
                              w = {
                                  roofColor: polyfill.Util.color2RgbaArray(y.color1),
                                  wallColor: polyfill.Util.color2RgbaArray(y.color2)
                              }))
                          }
                          !r && t || r && !s || 0 < (n = I.A_.tz(E, e.height)) && I.C_.add(e.Fp, e.Ep, n, e.minzoom, e.maxzoom, e.ew, w.roofColor, w.wallColor)
                      } else
                          0 < (n = I.A_.tz(E, e.height)) && I.C_.add(e.Fp, e.Ep, n, e.minzoom, e.maxzoom, e.ew)
                  }
      }
  }
  ,
  b.prototype.hQ = function(A, i) {
      if (A)
          for (var g = this.SQ(A) || [], I = 0, t = g = new LabelFormatMap[A.type]({
              vn: this.parent.vn
          }).DQ(g, {
              zoom: i
          }); I < t.length; I++) {
              var B = t[I]
                , Q = B.CO;
              B.EG || (B.EG = {});
              for (var C = 0, e = Q; C < e.length; C++) {
                  var o = e[C]
                    , E = this.parent.R_.mz(o);
                  B.EG[o] = E
              }
          }
      return g
  }
  ,
  b.prototype.SQ = function(A) {
      return A.data && A.data.roadName || A.Dh
  }
  ,
  b.Pw = [1, 0, 1, 0],
  b.Wa = {
      0: "poilabel",
      1: "road",
      2: "region",
      3: "building",
      4: "roadName"
  },
  b), a;
  function b(A) {
      var i = a.call(this) || this;
      return i.parent = A,
      i.id = "nebula",
      i.sQ = {},
      i.aW = null,
      i.WW = 20,
      i.xQ = [],
      i.bQ = [],
      i.bind(),
      i
  }
  var hasWarning = !1;
  function makeFetchRequest(A, i, g) {
      if (!polyfill.Support.safari && !polyfill.Support.AQ && !polyfill.Support.gQ && self.fetch && self.Request && self.AbortController && self.Request.prototype.hasOwnProperty("signal")) {
          var I = new AbortController
            , t = I.signal
            , t = new self.Request(i,{
              method: "GET",
              referrer: "null" === self.location.origin ? void 0 : self.location.origin,
              signal: t
          });
          return polyfill.Support.amapRunTime && (polyfill.Support.amapRunTime["data-request"] || (polyfill.Support.amapRunTime["data-request"] = (new Date).getTime())),
          fetch(t).then(function(A) {
              return polyfill.Support.amapRunTime && (polyfill.Support.amapRunTime["data-loaded"] || (polyfill.Support.amapRunTime["data-loaded"] = (new Date).getTime())),
              "application/x-protobuf" === A.headers.get("content-type") ? A.arrayBuffer() : A.json()
          }).then(function(A) {
              A.info ? hasWarning || (hasWarning = !0,
              console.log(i),
              console.log("<AMap JSAPI> KEY异常，错误信息：" + A.info)) : g(null, A)
          }).catch(function(A) {
              "AbortError" !== A.name && g(A.message || "unknown error")
          }),
          {
              cancel: function() {
                  I.abort()
              }
          }
      }
      var B = A.send("request", i, function(A, i) {
          A ? ("<cancel>" === A && B && B.cancel && B.cancel(),
          B = void 0,
          g(A)) : (B = void 0,
          g(null, i))
      });
      return B
  }
  var DistrictSourceWorker = function() {
      function DistrictSourceWorker(A) {
          this.parent = A,
          this.fW = {}
      }
      return DistrictSourceWorker.prototype.bw = function(A, i, g, I, t) {
          var B = this
            , Q = new XMLHttpRequest;
          return Q.onreadystatechange = function() {
              var A;
              4 !== Q.readyState || 200 !== Q.status && 204 !== Q.status || (A = new polyfill.tW(new polyfill.pw(new Uint8Array(Q.response))),
              A = B.Ow(A, {
                  x: i.x,
                  y: i.y,
                  z: i.z,
                  projectionId: g,
                  tileSize: I
              }),
              t(null, polyfill.Ln({
                  zo: i
              }, A)))
          }
          ,
          Q.open("GET", A, !0),
          Q.responseType = "arraybuffer",
          Q.send(),
          {
              cancel: function() {
                  Q.abort()
              }
          }
      }
      ,
      DistrictSourceWorker.prototype.Ow = function(o, A) {
          var g = A.x
            , I = A.y
            , t = A.z
            , B = A.tileSize
            , Q = A.projectionId;
          o.z = t,
          o.x = g,
          o.y = I,
          A = polyfill.ProjectionManager.getProjection(Q).getResolution(t),
          o.Ro = polyfill.$Q(g, I, t, A, B),
          o.zS = polyfill.lcs.getLocalByCoord([o.Ro[0], o.Ro[1]]);
          var C = polyfill.ProjectionManager.getProjection(Q).getResolution(t);
          return polyfill.vx(o.layers, function(e) {
              var A = e.Cw;
              e.Ah = [],
              e.scale = C * B / e.extent;
              var i = polyfill.V[Q].Xs(B * g, B * I, t);
              e.ox = i[0],
              e.oy = i[1],
              polyfill.forEach(A, function(A, i) {
                  if ((A = e.Gw(i)).Dw(),
                  e.Ah.push(A),
                  A.lines && 0 < A.lines.length) {
                      A.Rw = [];
                      for (var g = 0, I = A.lines.length; g < I; g++) {
                          for (var t = [], B = 0, Q = A.lines[g].length; B < Q; B++) {
                              var C = [e.ox + e.scale * A.lines[g][B][0] - o.zS.center[0], e.oy - e.scale * A.lines[g][B][1] - o.zS.center[1]];
                              t.push(C)
                          }
                          A.Rw.push(t)
                      }
                  }
              })
          }),
          this.uW(o),
          this.xw(o),
          this.zw(o),
          o
      }
      ,
      DistrictSourceWorker.prototype.uW = function(A) {
          var i, g = [], I = [];
          for (i in A.layers)
              if (A.layers.hasOwnProperty(i))
                  for (var t = A.layers[i], B = 0; B < t.Ah.length; B += 1) {
                      var Q = t.Ah[B];
                      if (3 == +Q.type && Q.Rw) {
                          for (var C = Q.Rw, e = [], o = 0; o < C.length; o++)
                              polyfill.kS.isClockwise(C[o]) ? e.push([o]) : e.length && e[e.length - 1].push(o);
                          for (var E = 0; E < e.length; E++) {
                              var h = e[E];
                              if (1 < h.length) {
                                  for (var a = [], l = [], n = 0; n < h.length; n++) {
                                      var r = C[h[n]];
                                      0 < n && a.push(l.length / 2);
                                      for (var s = 0; s < r.length; s++) {
                                          var w = r[s];
                                          l.push(w[0], w[1])
                                      }
                                  }
                                  g.push({
                                      properties: Q.properties,
                                      path: l,
                                      LQ: a
                                  })
                              } else {
                                  for (l = [],
                                  r = C[h[0]],
                                  s = 0; s < r.length; s++) {
                                      var c = r[s];
                                      l.push(c[0], c[1])
                                  }
                                  g.push({
                                      properties: Q.properties,
                                      path: l
                                  })
                              }
                          }
                      } else if (3 !== Q.type && Q.Rw)
                          for (var y = 0; y < Q.Rw.length; y++)
                              I.push({
                                  properties: Q.properties,
                                  path: Q.Rw[y]
                              });
                      this.cW(Q)
                  }
          A.polygons = g,
          A.Dh = I,
          delete A.layers
      }
      ,
      DistrictSourceWorker.prototype.xw = function(A) {
          if (!A || !A.$c) {
              var i = new polyfill.LW;
              if (!A.$c && (A.Uc = i,
              A.$c = new polyfill.J_,
              A.Dh))
                  for (var g = 0, I = A.Dh; g < I.length; g++) {
                      var t = I[g]
                        , B = JSON.stringify(t.properties)
                        , C = (Q = A.$c.g0(t.path, {
                          X_: 0,
                          lineJoin: "round",
                          lineCap: "butt"
                      })).Iw
                        , Q = Q.distance;
                      0 < C && (i.add(B, 0, C, 0, 22),
                      t.distance = Q)
                  }
          }
      }
      ,
      DistrictSourceWorker.prototype.zw = function(A) {
          if (!A || !A.Dc) {
              var i = new polyfill.LW;
              A.Oc = i,
              A.Dc = new polyfill.K_;
              for (var g = 0, I = A.polygons; g < I.length; g++) {
                  var t = I[g]
                    , B = JSON.stringify(t.properties);
                  0 < (t = A.Dc.Nx(t.path, t.LQ)) && i.add(B, 0, t, 0, 22)
              }
          }
      }
      ,
      DistrictSourceWorker.prototype.dW = function(A) {
          switch (A) {
          case 0:
          case 1:
              return "Nation_Border_China";
          case 2:
              return "Coastline_China";
          case 3:
          case 4:
              return "Province_Border_China";
          case 5:
              return "City_Border_China";
          case 6:
              return "County_Border_China";
          case 7:
          case 8:
              return "Nation_Border_Foreign";
          case 9:
              return "Coastline_Foreign";
          case 10:
          case 11:
              return "Nation_Border_Foreign";
          case 12:
              return "Province_Border_Foreign";
          default:
              return ""
          }
      }
      ,
      DistrictSourceWorker.prototype.sW = function(code) {
          return this.fW[code] || (this.fW[code] = eval("'" + code.replace(/\//g, "\\u") + "'")),
          this.fW[code]
      }
      ,
      DistrictSourceWorker.prototype.cW = function(A) {
          A.properties.NAME_CHN && (A.properties.NAME_CHN = this.sW(A.properties.NAME_CHN.trim())),
          A.properties.NAME_ENG && (A.properties.NAME_ENG = A.properties.NAME_ENG.trim()),
          A.properties.level && (A.properties.level = A.properties.level.trim()),
          A.properties.citycode && A.properties.citycode.length && (A.properties.citycode = A.properties.citycode.trim()),
          A.properties.type_ = +A.properties.type,
          A.properties.feature_type_ = +A.type,
          A.properties.type = this.dW(+A.properties.type)
      }
      ,
      DistrictSourceWorker
  }()
    , mbStyle = {
      Hr: void 0,
      _r: {},
      kr: {
          "pedestrian-polygon": {
              width: 128,
              height: 128,
              x: 0,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "turning-circle-outline": {
              width: 92,
              height: 92,
              x: 128,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "turning-circle": {
              width: 84,
              height: 84,
              x: 0,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "us-interstate-truck-2": {
              width: 40,
              height: 80,
              x: 84,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "us-interstate-truck-3": {
              width: 52,
              height: 80,
              x: 124,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-business-2": {
              width: 40,
              height: 76,
              x: 176,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-business-3": {
              width: 52,
              height: 76,
              x: 216,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-bypass-2": {
              width: 40,
              height: 76,
              x: 268,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-bypass-3": {
              width: 52,
              height: 76,
              x: 308,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-truck-2": {
              width: 40,
              height: 76,
              x: 360,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-truck-3": {
              width: 52,
              height: 76,
              x: 400,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "ae-f-route-3": {
              width: 48,
              height: 54,
              x: 452,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "ae-s-route-4": {
              width: 76,
              height: 52,
              x: 220,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "pe-national-2": {
              width: 36,
              height: 52,
              x: 296,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "pe-national-3": {
              width: 44,
              height: 52,
              x: 332,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "ae-national-3": {
              width: 52,
              height: 50,
              x: 376,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "ae-national-4": {
              width: 64,
              height: 50,
              x: 428,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "ae-d-route-3": {
              width: 48,
              height: 48,
              x: 0,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "ae-d-route-4": {
              width: 60,
              height: 48,
              x: 48,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "tw-provincial-2": {
              width: 44,
              height: 48,
              x: 108,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "tw-provincial-3": {
              width: 56,
              height: 48,
              x: 152,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "tw-provincial-expy-2": {
              width: 44,
              height: 48,
              x: 208,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "tw-provincial-expy-3": {
              width: 56,
              height: 48,
              x: 252,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "za-provincial-2": {
              width: 48,
              height: 48,
              x: 308,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "cn-nths-expy-2": {
              width: 40,
              height: 46,
              x: 356,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "cn-nths-expy-3": {
              width: 52,
              height: 46,
              x: 396,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "cn-nths-expy-4": {
              width: 64,
              height: 46,
              x: 448,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "cn-nths-expy-5": {
              width: 76,
              height: 46,
              x: 0,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "cn-provincial-expy-2": {
              width: 40,
              height: 46,
              x: 76,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "cn-provincial-expy-3": {
              width: 52,
              height: 46,
              x: 116,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "cn-provincial-expy-4": {
              width: 64,
              height: 46,
              x: 168,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "cn-provincial-expy-5": {
              width: 76,
              height: 46,
              x: 232,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "br-federal-3": {
              width: 52,
              height: 44,
              x: 308,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "hk-strategic-route-2": {
              width: 36,
              height: 44,
              x: 360,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "in-national-2": {
              width: 32,
              height: 44,
              x: 396,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "in-national-3": {
              width: 40,
              height: 44,
              x: 428,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "in-national-4": {
              width: 48,
              height: 44,
              x: 0,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "in-state-2": {
              width: 32,
              height: 44,
              x: 48,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "in-state-3": {
              width: 40,
              height: 44,
              x: 80,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "kr-natl-expy-2": {
              width: 40,
              height: 44,
              x: 120,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "kr-natl-expy-3": {
              width: 52,
              height: 44,
              x: 160,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "mx-federal-2": {
              width: 36,
              height: 44,
              x: 212,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "mx-federal-3": {
              width: 46,
              height: 44,
              x: 248,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "mx-federal-4": {
              width: 56,
              height: 44,
              x: 294,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "mx-state-2": {
              width: 36,
              height: 44,
              x: 350,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "mx-state-3": {
              width: 46,
              height: 44,
              x: 386,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "mx-state-4": {
              width: 56,
              height: 44,
              x: 432,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "pe-regional-3": {
              width: 46,
              height: 44,
              x: 0,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "pe-regional-4": {
              width: 56,
              height: 44,
              x: 46,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "tw-national-2": {
              width: 42,
              height: 44,
              x: 102,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "us-interstate-2": {
              width: 40,
              height: 44,
              x: 144,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "us-interstate-3": {
              width: 52,
              height: 44,
              x: 184,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "us-interstate-4": {
              width: 64,
              height: 44,
              x: 236,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "us-interstate-business-2": {
              width: 40,
              height: 44,
              x: 300,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "us-interstate-business-3": {
              width: 52,
              height: 44,
              x: 340,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "us-interstate-duplex-4": {
              width: 64,
              height: 44,
              x: 392,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "us-interstate-duplex-5": {
              width: 76,
              height: 44,
              x: 0,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "airfield-15": {
              width: 42,
              height: 42,
              x: 456,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "airport-15": {
              width: 42,
              height: 42,
              x: 76,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "alcohol-shop-15": {
              width: 42,
              height: 42,
              x: 118,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "american-football-15": {
              width: 42,
              height: 42,
              x: 160,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "amusement-park-15": {
              width: 42,
              height: 42,
              x: 202,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "aquarium-15": {
              width: 42,
              height: 42,
              x: 244,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "art-gallery-15": {
              width: 42,
              height: 42,
              x: 286,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "attraction-15": {
              width: 42,
              height: 42,
              x: 328,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "au-tourist-2": {
              width: 40,
              height: 42,
              x: 370,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "au-tourist-3": {
              width: 56,
              height: 42,
              x: 410,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "bakery-15": {
              width: 42,
              height: 42,
              x: 466,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "bank-15": {
              width: 42,
              height: 42,
              x: 468,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "bar-15": {
              width: 42,
              height: 42,
              x: 0,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "basketball-15": {
              width: 42,
              height: 42,
              x: 42,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "beach-15": {
              width: 42,
              height: 42,
              x: 84,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "beer-15": {
              width: 42,
              height: 42,
              x: 126,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "bicycle-15": {
              width: 42,
              height: 42,
              x: 168,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "bowling-alley-15": {
              width: 42,
              height: 42,
              x: 210,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "bridge-15": {
              width: 42,
              height: 42,
              x: 252,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "cafe-15": {
              width: 42,
              height: 42,
              x: 294,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "campsite-15": {
              width: 42,
              height: 42,
              x: 336,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "car-15": {
              width: 42,
              height: 42,
              x: 378,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "car-rental-15": {
              width: 42,
              height: 42,
              x: 420,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "car-repair-15": {
              width: 42,
              height: 42,
              x: 462,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "casino-15": {
              width: 42,
              height: 42,
              x: 504,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "castle-15": {
              width: 42,
              height: 42,
              x: 546,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "cemetery-15": {
              width: 42,
              height: 42,
              x: 588,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "charging-station-15": {
              width: 42,
              height: 42,
              x: 630,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "cinema-15": {
              width: 42,
              height: 42,
              x: 672,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "clothing-store-15": {
              width: 42,
              height: 42,
              x: 714,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "college-15": {
              width: 42,
              height: 42,
              x: 756,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "communications-tower-15": {
              width: 42,
              height: 42,
              x: 798,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "confectionery-15": {
              width: 42,
              height: 42,
              x: 840,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "convenience-15": {
              width: 42,
              height: 42,
              x: 882,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "dentist-15": {
              width: 42,
              height: 42,
              x: 924,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "doctor-15": {
              width: 42,
              height: 42,
              x: 966,
              y: 438,
              pixelRatio: 2,
              visible: !0
          },
          "dog-park-15": {
              width: 42,
              height: 42,
              x: 488,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "drinking-water-15": {
              width: 42,
              height: 42,
              x: 530,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "embassy-15": {
              width: 42,
              height: 42,
              x: 572,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "farm-15": {
              width: 42,
              height: 42,
              x: 614,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "fast-food-15": {
              width: 42,
              height: 42,
              x: 656,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "fire-station-15": {
              width: 42,
              height: 42,
              x: 698,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "fitness-centre-15": {
              width: 42,
              height: 42,
              x: 740,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "fuel-15": {
              width: 42,
              height: 42,
              x: 782,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "furniture-15": {
              width: 42,
              height: 42,
              x: 824,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "garden-15": {
              width: 42,
              height: 42,
              x: 866,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "globe-15": {
              width: 42,
              height: 42,
              x: 908,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "golf-15": {
              width: 42,
              height: 42,
              x: 950,
              y: 306,
              pixelRatio: 2,
              visible: !0
          },
          "grocery-15": {
              width: 42,
              height: 42,
              x: 498,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "harbor-15": {
              width: 42,
              height: 42,
              x: 540,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "hardware-15": {
              width: 42,
              height: 42,
              x: 582,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "heliport-15": {
              width: 42,
              height: 42,
              x: 624,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "horse-riding-15": {
              width: 42,
              height: 42,
              x: 666,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "hospital-15": {
              width: 42,
              height: 42,
              x: 708,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "ice-cream-15": {
              width: 42,
              height: 42,
              x: 750,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "information-15": {
              width: 42,
              height: 42,
              x: 792,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "jewelry-store-15": {
              width: 42,
              height: 42,
              x: 834,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "laundry-15": {
              width: 42,
              height: 42,
              x: 876,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "library-15": {
              width: 42,
              height: 42,
              x: 918,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "lodging-15": {
              width: 42,
              height: 42,
              x: 960,
              y: 350,
              pixelRatio: 2,
              visible: !0
          },
          "mobile-phone-15": {
              width: 42,
              height: 42,
              x: 508,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "monument-15": {
              width: 42,
              height: 42,
              x: 550,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "mountain-15": {
              width: 42,
              height: 42,
              x: 592,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "museum-15": {
              width: 42,
              height: 42,
              x: 634,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "music-15": {
              width: 42,
              height: 42,
              x: 676,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "optician-15": {
              width: 42,
              height: 42,
              x: 718,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "park-15": {
              width: 42,
              height: 42,
              x: 760,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "parking-15": {
              width: 42,
              height: 42,
              x: 802,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "parking-garage-15": {
              width: 42,
              height: 42,
              x: 844,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "pharmacy-15": {
              width: 42,
              height: 42,
              x: 886,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "picnic-site-15": {
              width: 42,
              height: 42,
              x: 928,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "pitch-15": {
              width: 42,
              height: 42,
              x: 970,
              y: 394,
              pixelRatio: 2,
              visible: !0
          },
          "place-of-worship-15": {
              width: 42,
              height: 42,
              x: 510,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "playground-15": {
              width: 42,
              height: 42,
              x: 552,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "police-15": {
              width: 42,
              height: 42,
              x: 594,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "post-15": {
              width: 42,
              height: 42,
              x: 636,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "prison-15": {
              width: 42,
              height: 42,
              x: 678,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "ranger-station-15": {
              width: 42,
              height: 42,
              x: 720,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "religious-buddhist-15": {
              width: 42,
              height: 42,
              x: 762,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "religious-christian-15": {
              width: 42,
              height: 42,
              x: 804,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "religious-jewish-15": {
              width: 42,
              height: 42,
              x: 846,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "religious-muslim-15": {
              width: 42,
              height: 42,
              x: 888,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "restaurant-15": {
              width: 42,
              height: 42,
              x: 930,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "restaurant-noodle-15": {
              width: 42,
              height: 42,
              x: 972,
              y: 260,
              pixelRatio: 2,
              visible: !0
          },
          "restaurant-pizza-15": {
              width: 42,
              height: 42,
              x: 512,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "restaurant-seafood-15": {
              width: 42,
              height: 42,
              x: 554,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "rocket-15": {
              width: 42,
              height: 42,
              x: 596,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "school-15": {
              width: 42,
              height: 42,
              x: 638,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "shoe-15": {
              width: 42,
              height: 42,
              x: 680,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "shop-15": {
              width: 42,
              height: 42,
              x: 722,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "skateboard-15": {
              width: 42,
              height: 42,
              x: 764,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "slipway-15": {
              width: 42,
              height: 42,
              x: 806,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "stadium-15": {
              width: 42,
              height: 42,
              x: 848,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "suitcase-15": {
              width: 42,
              height: 42,
              x: 890,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "swimming-15": {
              width: 42,
              height: 42,
              x: 932,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "table-tennis-15": {
              width: 42,
              height: 42,
              x: 974,
              y: 212,
              pixelRatio: 2,
              visible: !0
          },
          "tennis-15": {
              width: 42,
              height: 42,
              x: 500,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "theatre-15": {
              width: 42,
              height: 42,
              x: 542,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "toilet-15": {
              width: 42,
              height: 42,
              x: 584,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "town-hall-15": {
              width: 42,
              height: 42,
              x: 626,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "veterinary-15": {
              width: 42,
              height: 42,
              x: 668,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "viewpoint-15": {
              width: 42,
              height: 42,
              x: 710,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "volcano-15": {
              width: 42,
              height: 42,
              x: 752,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "volleyball-15": {
              width: 42,
              height: 42,
              x: 794,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "watch-15": {
              width: 42,
              height: 42,
              x: 836,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "waterfall-15": {
              width: 42,
              height: 42,
              x: 878,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "watermill-15": {
              width: 42,
              height: 42,
              x: 920,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "windmill-15": {
              width: 42,
              height: 42,
              x: 962,
              y: 128,
              pixelRatio: 2,
              visible: !0
          },
          "zoo-15": {
              width: 42,
              height: 42,
              x: 492,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "au-national-highway-2": {
              width: 40,
              height: 40,
              x: 534,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "au-national-highway-3": {
              width: 52,
              height: 40,
              x: 574,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "au-national-route-2": {
              width: 40,
              height: 40,
              x: 626,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "au-national-route-3": {
              width: 52,
              height: 40,
              x: 666,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "au-national-route-4": {
              width: 64,
              height: 40,
              x: 718,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "au-national-route-5": {
              width: 76,
              height: 40,
              x: 782,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "au-national-route-6": {
              width: 86,
              height: 40,
              x: 858,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "au-state-2": {
              width: 36,
              height: 40,
              x: 944,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "au-state-3": {
              width: 46,
              height: 40,
              x: 0,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "au-state-4": {
              width: 58,
              height: 40,
              x: 46,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "au-state-5": {
              width: 68,
              height: 40,
              x: 104,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "au-state-6": {
              width: 78,
              height: 40,
              x: 172,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "br-state-2": {
              width: 40,
              height: 40,
              x: 250,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "br-state-3": {
              width: 56,
              height: 40,
              x: 290,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "circle-white-2": {
              width: 40,
              height: 40,
              x: 346,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "circle-white-3": {
              width: 52,
              height: 40,
              x: 386,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "circle-white-4": {
              width: 64,
              height: 40,
              x: 438,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "hu-main-2": {
              width: 40,
              height: 40,
              x: 502,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "hu-main-3": {
              width: 52,
              height: 40,
              x: 542,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "hu-main-4": {
              width: 64,
              height: 40,
              x: 594,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "hu-main-5": {
              width: 76,
              height: 40,
              x: 658,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "hu-motorway-2": {
              width: 40,
              height: 40,
              x: 734,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "hu-motorway-3": {
              width: 52,
              height: 40,
              x: 774,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "marker-15": {
              width: 24,
              height: 40,
              x: 826,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "nz-state-2": {
              width: 36,
              height: 40,
              x: 850,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "nz-state-3": {
              width: 46,
              height: 40,
              x: 886,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "ro-communal-2": {
              width: 40,
              height: 40,
              x: 932,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "ro-communal-3": {
              width: 52,
              height: 40,
              x: 972,
              y: 480,
              pixelRatio: 2,
              visible: !0
          },
          "ro-communal-4": {
              width: 64,
              height: 40,
              x: 0,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "ro-county-3": {
              width: 52,
              height: 40,
              x: 64,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "ro-county-4": {
              width: 64,
              height: 40,
              x: 116,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "ro-national-2": {
              width: 40,
              height: 40,
              x: 180,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "ro-national-3": {
              width: 52,
              height: 40,
              x: 220,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "tw-county-township-2": {
              width: 40,
              height: 40,
              x: 272,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "tw-county-township-3": {
              width: 52,
              height: 40,
              x: 312,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "tw-county-township-4": {
              width: 64,
              height: 40,
              x: 364,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "tw-county-township-5": {
              width: 76,
              height: 40,
              x: 428,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "tw-county-township-6": {
              width: 88,
              height: 40,
              x: 504,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "us-bia-2": {
              width: 40,
              height: 40,
              x: 592,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "us-bia-3": {
              width: 52,
              height: 40,
              x: 632,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "us-bia-4": {
              width: 60,
              height: 40,
              x: 684,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-2": {
              width: 40,
              height: 40,
              x: 744,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-3": {
              width: 52,
              height: 40,
              x: 784,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-4": {
              width: 64,
              height: 40,
              x: 836,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-alternate-2": {
              width: 40,
              height: 40,
              x: 900,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-alternate-3": {
              width: 52,
              height: 40,
              x: 940,
              y: 520,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-duplex-3": {
              width: 52,
              height: 40,
              x: 0,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-duplex-4": {
              width: 64,
              height: 40,
              x: 52,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "us-highway-duplex-5": {
              width: 76,
              height: 40,
              x: 116,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "za-national-2": {
              width: 40,
              height: 40,
              x: 192,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "za-national-3": {
              width: 56,
              height: 40,
              x: 232,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "barcelona-metro": {
              width: 38,
              height: 38,
              x: 288,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "boston-t": {
              width: 38,
              height: 38,
              x: 326,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "de-s-bahn": {
              width: 38,
              height: 38,
              x: 364,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "de-s-bahn.de-u-bahn": {
              width: 70,
              height: 38,
              x: 402,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "delhi-metro": {
              width: 38,
              height: 38,
              x: 472,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "kiev-metro": {
              width: 38,
              height: 38,
              x: 510,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "kr-metro-expy-2": {
              width: 40,
              height: 38,
              x: 548,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "kr-metro-expy-3": {
              width: 52,
              height: 38,
              x: 588,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "kr-metro-expy-4": {
              width: 64,
              height: 38,
              x: 640,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "madrid-metro": {
              width: 38,
              height: 38,
              x: 704,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "new-york-subway": {
              width: 38,
              height: 38,
              x: 742,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "oslo-metro": {
              width: 38,
              height: 38,
              x: 780,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "paris-metro": {
              width: 38,
              height: 38,
              x: 818,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "paris-metro.paris-rer": {
              width: 74,
              height: 38,
              x: 856,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "paris-rer": {
              width: 38,
              height: 38,
              x: 930,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "paris-rer.paris-transilien": {
              width: 70,
              height: 38,
              x: 0,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "road-closure": {
              width: 38,
              height: 38,
              x: 70,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "stockholm-metro": {
              width: 38,
              height: 38,
              x: 108,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "taipei-metro": {
              width: 38,
              height: 38,
              x: 146,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "vienna-u-bahn": {
              width: 38,
              height: 38,
              x: 184,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "kr-natl-hwy-2": {
              width: 44,
              height: 36,
              x: 222,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "airfield-11": {
              width: 34,
              height: 34,
              x: 266,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "airport-11": {
              width: 34,
              height: 34,
              x: 300,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "alcohol-shop-11": {
              width: 34,
              height: 34,
              x: 334,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "american-football-11": {
              width: 34,
              height: 34,
              x: 368,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "amusement-park-11": {
              width: 34,
              height: 34,
              x: 402,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "aquarium-11": {
              width: 34,
              height: 34,
              x: 436,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "art-gallery-11": {
              width: 34,
              height: 34,
              x: 470,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "attraction-11": {
              width: 34,
              height: 34,
              x: 504,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "bakery-11": {
              width: 34,
              height: 34,
              x: 538,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "bank-11": {
              width: 34,
              height: 34,
              x: 572,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "bar-11": {
              width: 34,
              height: 34,
              x: 606,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "basketball-11": {
              width: 34,
              height: 34,
              x: 640,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "beach-11": {
              width: 34,
              height: 34,
              x: 674,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "beer-11": {
              width: 34,
              height: 34,
              x: 708,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "bicycle-11": {
              width: 34,
              height: 34,
              x: 742,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "bicycle-share": {
              width: 34,
              height: 34,
              x: 776,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "bowling-alley-11": {
              width: 34,
              height: 34,
              x: 810,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "bridge-11": {
              width: 34,
              height: 34,
              x: 844,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          bus: {
              width: 34,
              height: 34,
              x: 878,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "cafe-11": {
              width: 34,
              height: 34,
              x: 912,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "campsite-11": {
              width: 34,
              height: 34,
              x: 946,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "car-11": {
              width: 34,
              height: 34,
              x: 980,
              y: 600,
              pixelRatio: 2,
              visible: !0
          },
          "car-rental-11": {
              width: 34,
              height: 34,
              x: 968,
              y: 560,
              pixelRatio: 2,
              visible: !0
          },
          "car-repair-11": {
              width: 34,
              height: 34,
              x: 980,
              y: 0,
              pixelRatio: 2,
              visible: !0
          },
          "casino-11": {
              width: 34,
              height: 34,
              x: 0,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "castle-11": {
              width: 34,
              height: 34,
              x: 34,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "cemetery-11": {
              width: 34,
              height: 34,
              x: 68,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "charging-station-11": {
              width: 34,
              height: 34,
              x: 102,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "chongqing-rail-transit": {
              width: 50,
              height: 34,
              x: 136,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "cinema-11": {
              width: 34,
              height: 34,
              x: 186,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "clothing-store-11": {
              width: 34,
              height: 34,
              x: 220,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "college-11": {
              width: 34,
              height: 34,
              x: 254,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "communications-tower-11": {
              width: 34,
              height: 34,
              x: 288,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "confectionery-11": {
              width: 34,
              height: 34,
              x: 322,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "convenience-11": {
              width: 34,
              height: 34,
              x: 356,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "de-u-bahn": {
              width: 34,
              height: 34,
              x: 390,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "dentist-11": {
              width: 34,
              height: 34,
              x: 424,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "doctor-11": {
              width: 34,
              height: 34,
              x: 458,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "dog-park-11": {
              width: 34,
              height: 34,
              x: 492,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "drinking-water-11": {
              width: 34,
              height: 34,
              x: 526,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "embassy-11": {
              width: 34,
              height: 34,
              x: 560,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          entrance: {
              width: 34,
              height: 34,
              x: 594,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "farm-11": {
              width: 34,
              height: 34,
              x: 628,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "fast-food-11": {
              width: 34,
              height: 34,
              x: 662,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          ferry: {
              width: 34,
              height: 34,
              x: 696,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "fire-station-11": {
              width: 34,
              height: 34,
              x: 730,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "fitness-centre-11": {
              width: 34,
              height: 34,
              x: 764,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "fuel-11": {
              width: 34,
              height: 34,
              x: 798,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "furniture-11": {
              width: 34,
              height: 34,
              x: 832,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "garden-11": {
              width: 34,
              height: 34,
              x: 866,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "globe-11": {
              width: 34,
              height: 34,
              x: 900,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "golf-11": {
              width: 34,
              height: 34,
              x: 934,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "grocery-11": {
              width: 34,
              height: 34,
              x: 968,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "harbor-11": {
              width: 34,
              height: 34,
              x: 0,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "hardware-11": {
              width: 34,
              height: 34,
              x: 34,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "heliport-11": {
              width: 34,
              height: 34,
              x: 68,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "hong-kong-mtr": {
              width: 38,
              height: 34,
              x: 102,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "horse-riding-11": {
              width: 34,
              height: 34,
              x: 140,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "hospital-11": {
              width: 34,
              height: 34,
              x: 174,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "ice-cream-11": {
              width: 34,
              height: 34,
              x: 208,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "information-11": {
              width: 34,
              height: 34,
              x: 242,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "jewelry-store-11": {
              width: 34,
              height: 34,
              x: 276,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "laundry-11": {
              width: 34,
              height: 34,
              x: 310,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "library-11": {
              width: 34,
              height: 34,
              x: 344,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "lodging-11": {
              width: 34,
              height: 34,
              x: 378,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "marker-11": {
              width: 24,
              height: 34,
              x: 412,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "mexico-city-metro": {
              width: 34,
              height: 34,
              x: 436,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "milan-metro": {
              width: 34,
              height: 34,
              x: 470,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "mobile-phone-11": {
              width: 34,
              height: 34,
              x: 504,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "monument-11": {
              width: 34,
              height: 34,
              x: 538,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "moscow-metro": {
              width: 34,
              height: 34,
              x: 572,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "mountain-11": {
              width: 34,
              height: 34,
              x: 606,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "museum-11": {
              width: 34,
              height: 34,
              x: 640,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "music-11": {
              width: 34,
              height: 34,
              x: 674,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "optician-11": {
              width: 34,
              height: 34,
              x: 708,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "osaka-subway": {
              width: 40,
              height: 34,
              x: 742,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "paris-transilien": {
              width: 34,
              height: 34,
              x: 782,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "park-11": {
              width: 34,
              height: 34,
              x: 816,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "parking-11": {
              width: 34,
              height: 34,
              x: 850,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "parking-garage-11": {
              width: 34,
              height: 34,
              x: 884,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "pharmacy-11": {
              width: 34,
              height: 34,
              x: 918,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "philadelphia-septa": {
              width: 38,
              height: 34,
              x: 952,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "picnic-site-11": {
              width: 34,
              height: 34,
              x: 990,
              y: 672,
              pixelRatio: 2,
              visible: !0
          },
          "pitch-11": {
              width: 34,
              height: 34,
              x: 0,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "place-of-worship-11": {
              width: 34,
              height: 34,
              x: 34,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "playground-11": {
              width: 34,
              height: 34,
              x: 68,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "police-11": {
              width: 34,
              height: 34,
              x: 102,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "post-11": {
              width: 34,
              height: 34,
              x: 136,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "prison-11": {
              width: 34,
              height: 34,
              x: 170,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          rail: {
              width: 34,
              height: 34,
              x: 204,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "rail-light": {
              width: 34,
              height: 34,
              x: 238,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "rail-metro": {
              width: 34,
              height: 34,
              x: 272,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "ranger-station-11": {
              width: 34,
              height: 34,
              x: 306,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "religious-buddhist-11": {
              width: 34,
              height: 34,
              x: 340,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "religious-christian-11": {
              width: 34,
              height: 34,
              x: 374,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "religious-jewish-11": {
              width: 34,
              height: 34,
              x: 408,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "religious-muslim-11": {
              width: 34,
              height: 34,
              x: 442,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "restaurant-11": {
              width: 34,
              height: 34,
              x: 476,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "restaurant-noodle-11": {
              width: 34,
              height: 34,
              x: 510,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "restaurant-pizza-11": {
              width: 34,
              height: 34,
              x: 544,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "restaurant-seafood-11": {
              width: 34,
              height: 34,
              x: 578,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "rocket-11": {
              width: 34,
              height: 34,
              x: 612,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "san-francisco-bart": {
              width: 34,
              height: 34,
              x: 646,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "school-11": {
              width: 34,
              height: 34,
              x: 680,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "shoe-11": {
              width: 34,
              height: 34,
              x: 714,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "shop-11": {
              width: 34,
              height: 34,
              x: 748,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "singapore-mrt": {
              width: 34,
              height: 34,
              x: 782,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "skateboard-11": {
              width: 34,
              height: 34,
              x: 816,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "slipway-11": {
              width: 34,
              height: 34,
              x: 850,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "stadium-11": {
              width: 34,
              height: 34,
              x: 884,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "suitcase-11": {
              width: 34,
              height: 34,
              x: 918,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "swimming-11": {
              width: 34,
              height: 34,
              x: 952,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "table-tennis-11": {
              width: 34,
              height: 34,
              x: 986,
              y: 706,
              pixelRatio: 2,
              visible: !0
          },
          "tennis-11": {
              width: 34,
              height: 34,
              x: 0,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "theatre-11": {
              width: 34,
              height: 34,
              x: 34,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "toilet-11": {
              width: 34,
              height: 34,
              x: 68,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "tokyo-metro": {
              width: 34,
              height: 34,
              x: 102,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "town-hall-11": {
              width: 34,
              height: 34,
              x: 136,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "traffic-signal": {
              width: 16,
              height: 34,
              x: 1002,
              y: 638,
              pixelRatio: 2,
              visible: !0
          },
          "veterinary-11": {
              width: 34,
              height: 34,
              x: 170,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "viewpoint-11": {
              width: 34,
              height: 34,
              x: 204,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "volcano-11": {
              width: 34,
              height: 34,
              x: 238,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "volleyball-11": {
              width: 34,
              height: 34,
              x: 272,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "washington-metro": {
              width: 34,
              height: 34,
              x: 306,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "watch-11": {
              width: 34,
              height: 34,
              x: 340,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "waterfall-11": {
              width: 34,
              height: 34,
              x: 374,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "watermill-11": {
              width: 34,
              height: 34,
              x: 408,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "windmill-11": {
              width: 34,
              height: 34,
              x: 442,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "zoo-11": {
              width: 34,
              height: 34,
              x: 476,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "ch-motorway-2": {
              width: 44,
              height: 32,
              x: 510,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "ch-motorway-3": {
              width: 56,
              height: 32,
              x: 554,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "de-motorway-2": {
              width: 44,
              height: 32,
              x: 610,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "de-motorway-3": {
              width: 56,
              height: 32,
              x: 654,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "gb-national-rail.london-dlr": {
              width: 72,
              height: 32,
              x: 710,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "gb-national-rail.london-dlr.london-overground.london-tfl-rail.london-underground": {
              width: 186,
              height: 32,
              x: 782,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "gb-national-rail.london-dlr.london-overground.london-underground": {
              width: 148,
              height: 32,
              x: 0,
              y: 774,
              pixelRatio: 2,
              visible: !0
          },
          "gb-national-rail.london-dlr.london-underground": {
              width: 110,
              height: 32,
              x: 148,
              y: 774,
              pixelRatio: 2,
              visible: !0
          },
          "gb-national-rail.london-overground": {
              width: 72,
              height: 32,
              x: 258,
              y: 774,
              pixelRatio: 2,
              visible: !0
          },
          "gb-national-rail.london-overground.london-tfl-rail.london-underground": {
              width: 148,
              height: 32,
              x: 330,
              y: 774,
              pixelRatio: 2,
              visible: !0
          },
          "gb-national-rail.london-overground.london-underground": {
              width: 110,
              height: 32,
              x: 478,
              y: 774,
              pixelRatio: 2,
              visible: !0
          },
          "gb-national-rail.london-tfl-rail": {
              width: 72,
              height: 32,
              x: 588,
              y: 774,
              pixelRatio: 2,
              visible: !0
          },
          "gb-national-rail.london-tfl-rail.london-overground": {
              width: 110,
              height: 32,
              x: 660,
              y: 774,
              pixelRatio: 2,
              visible: !0
          },
          "gb-national-rail.london-tfl-rail.london-underground": {
              width: 110,
              height: 32,
              x: 770,
              y: 774,
              pixelRatio: 2,
              visible: !0
          },
          "gb-national-rail.london-underground": {
              width: 72,
              height: 32,
              x: 880,
              y: 774,
              pixelRatio: 2,
              visible: !0
          },
          "gr-motorway-2": {
              width: 44,
              height: 32,
              x: 952,
              y: 774,
              pixelRatio: 2,
              visible: !0
          },
          "gr-motorway-3": {
              width: 56,
              height: 32,
              x: 968,
              y: 740,
              pixelRatio: 2,
              visible: !0
          },
          "gr-motorway-4": {
              width: 68,
              height: 32,
              x: 0,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "hr-motorway-3": {
              width: 56,
              height: 32,
              x: 68,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "hr-motorway-4": {
              width: 68,
              height: 32,
              x: 124,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "kr-metropolitan-2": {
              width: 40,
              height: 32,
              x: 192,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "kr-metropolitan-3": {
              width: 52,
              height: 32,
              x: 232,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "kr-metropolitan-4": {
              width: 64,
              height: 32,
              x: 284,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "kr-metropolitan-5": {
              width: 76,
              height: 32,
              x: 348,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "kr-metropolitan-6": {
              width: 88,
              height: 32,
              x: 424,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "london-dlr": {
              width: 40,
              height: 32,
              x: 512,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "london-dlr.london-tfl-rail": {
              width: 78,
              height: 32,
              x: 552,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "london-dlr.london-tfl-rail.london-underground": {
              width: 116,
              height: 32,
              x: 630,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "london-dlr.london-underground": {
              width: 78,
              height: 32,
              x: 746,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "london-overground": {
              width: 40,
              height: 32,
              x: 824,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "london-overground.london-tfl-rail": {
              width: 78,
              height: 32,
              x: 864,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "london-overground.london-tfl-rail.london-underground": {
              width: 116,
              height: 32,
              x: 0,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "london-overground.london-underground": {
              width: 78,
              height: 32,
              x: 942,
              y: 806,
              pixelRatio: 2,
              visible: !0
          },
          "london-tfl-rail": {
              width: 40,
              height: 32,
              x: 116,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "london-tfl-rail.london-underground": {
              width: 78,
              height: 32,
              x: 156,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "london-underground": {
              width: 40,
              height: 32,
              x: 234,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "si-motorway-2": {
              width: 44,
              height: 32,
              x: 274,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          wetland: {
              width: 32,
              height: 32,
              x: 318,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "level-crossing": {
              width: 30,
              height: 30,
              x: 350,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "default-2": {
              width: 40,
              height: 28,
              x: 380,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "default-3": {
              width: 52,
              height: 28,
              x: 420,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "default-4": {
              width: 64,
              height: 28,
              x: 472,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "default-5": {
              width: 76,
              height: 28,
              x: 536,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "default-6": {
              width: 88,
              height: 28,
              x: 612,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "gb-national-rail": {
              width: 34,
              height: 28,
              x: 700,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "motorway-exit-1": {
              width: 40,
              height: 28,
              x: 734,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "motorway-exit-2": {
              width: 40,
              height: 28,
              x: 774,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "motorway-exit-3": {
              width: 52,
              height: 28,
              x: 814,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "motorway-exit-4": {
              width: 64,
              height: 28,
              x: 866,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "motorway-exit-5": {
              width: 76,
              height: 28,
              x: 930,
              y: 838,
              pixelRatio: 2,
              visible: !0
          },
          "motorway-exit-6": {
              width: 88,
              height: 28,
              x: 0,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "motorway-exit-7": {
              width: 100,
              height: 28,
              x: 88,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "motorway-exit-8": {
              width: 112,
              height: 28,
              x: 188,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "motorway-exit-9": {
              width: 124,
              height: 28,
              x: 300,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-blue-2": {
              width: 40,
              height: 28,
              x: 424,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-blue-3": {
              width: 52,
              height: 28,
              x: 464,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-blue-4": {
              width: 64,
              height: 28,
              x: 516,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-green-2": {
              width: 40,
              height: 28,
              x: 580,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-green-3": {
              width: 52,
              height: 28,
              x: 620,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-green-4": {
              width: 64,
              height: 28,
              x: 672,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-green-5": {
              width: 76,
              height: 28,
              x: 736,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-green-6": {
              width: 88,
              height: 28,
              x: 812,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-red-2": {
              width: 40,
              height: 28,
              x: 900,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-red-3": {
              width: 52,
              height: 28,
              x: 940,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-red-4": {
              width: 64,
              height: 28,
              x: 0,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-white-2": {
              width: 40,
              height: 28,
              x: 64,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-white-3": {
              width: 52,
              height: 28,
              x: 104,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-white-4": {
              width: 64,
              height: 28,
              x: 156,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-white-5": {
              width: 76,
              height: 28,
              x: 220,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-white-6": {
              width: 88,
              height: 28,
              x: 296,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-yellow-2": {
              width: 40,
              height: 28,
              x: 384,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-yellow-3": {
              width: 52,
              height: 28,
              x: 424,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-yellow-4": {
              width: 64,
              height: 28,
              x: 476,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-yellow-5": {
              width: 76,
              height: 28,
              x: 540,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "rectangle-yellow-6": {
              width: 88,
              height: 28,
              x: 616,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "border-dot-13": {
              width: 26,
              height: 26,
              x: 992,
              y: 870,
              pixelRatio: 2,
              visible: !0
          },
          "dot-10": {
              width: 22,
              height: 22,
              x: 704,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "dot-11": {
              width: 22,
              height: 22,
              x: 726,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "dot-9": {
              width: 22,
              height: 22,
              x: 748,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          cliff: {
              width: 16,
              height: 14,
              x: 770,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "oneway-large": {
              width: 28,
              height: 12,
              x: 786,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "oneway-white-large": {
              width: 28,
              height: 12,
              x: 814,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "oneway-small": {
              width: 22,
              height: 10,
              x: 842,
              y: 898,
              pixelRatio: 2,
              visible: !0
          },
          "oneway-white-small": {
              width: 22,
              height: 10,
              x: 864,
              y: 898,
              pixelRatio: 2,
              visible: !0
          }
      },
      VU: {
          "Latin-1 Supplement": function(A) {
              return 128 <= A && A <= 255
          },
          Arabic: function(A) {
              return 1536 <= A && A <= 1791
          },
          "Arabic Supplement": function(A) {
              return 1872 <= A && A <= 1919
          },
          "Arabic Extended-A": function(A) {
              return 2208 <= A && A <= 2303
          },
          "Hangul Jamo": function(A) {
              return 4352 <= A && A <= 4607
          },
          "Unified Canadian Aboriginal Syllabics": function(A) {
              return 5120 <= A && A <= 5759
          },
          Khmer: function(A) {
              return 6016 <= A && A <= 6143
          },
          "Unified Canadian Aboriginal Syllabics Extended": function(A) {
              return 6320 <= A && A <= 6399
          },
          "General Punctuation": function(A) {
              return 8192 <= A && A <= 8303
          },
          "Letterlike Symbols": function(A) {
              return 8448 <= A && A <= 8527
          },
          "Number Forms": function(A) {
              return 8528 <= A && A <= 8591
          },
          "Miscellaneous Technical": function(A) {
              return 8960 <= A && A <= 9215
          },
          "Control Pictures": function(A) {
              return 9216 <= A && A <= 9279
          },
          "Optical Character Recognition": function(A) {
              return 9280 <= A && A <= 9311
          },
          "Enclosed Alphanumerics": function(A) {
              return 9312 <= A && A <= 9471
          },
          "Geometric Shapes": function(A) {
              return 9632 <= A && A <= 9727
          },
          "Miscellaneous Symbols": function(A) {
              return 9728 <= A && A <= 9983
          },
          "Miscellaneous Symbols and Arrows": function(A) {
              return 11008 <= A && A <= 11263
          },
          "CJK Radicals Supplement": function(A) {
              return 11904 <= A && A <= 12031
          },
          "Kangxi Radicals": function(A) {
              return 12032 <= A && A <= 12255
          },
          "Ideographic Description Characters": function(A) {
              return 12272 <= A && A <= 12287
          },
          "CJK Symbols and Punctuation": function(A) {
              return 12288 <= A && A <= 12351
          },
          Hiragana: function(A) {
              return 12352 <= A && A <= 12447
          },
          Katakana: function(A) {
              return 12448 <= A && A <= 12543
          },
          Bopomofo: function(A) {
              return 12544 <= A && A <= 12591
          },
          "Hangul Compatibility Jamo": function(A) {
              return 12592 <= A && A <= 12687
          },
          Kanbun: function(A) {
              return 12688 <= A && A <= 12703
          },
          "Bopomofo Extended": function(A) {
              return 12704 <= A && A <= 12735
          },
          "CJK Strokes": function(A) {
              return 12736 <= A && A <= 12783
          },
          "Katakana Phonetic Extensions": function(A) {
              return 12784 <= A && A <= 12799
          },
          "Enclosed CJK Letters and Months": function(A) {
              return 12800 <= A && A <= 13055
          },
          "CJK Compatibility": function(A) {
              return 13056 <= A && A <= 13311
          },
          "CJK Unified Ideographs Extension A": function(A) {
              return 13312 <= A && A <= 19903
          },
          "Yijing Hexagram Symbols": function(A) {
              return 19904 <= A && A <= 19967
          },
          "CJK Unified Ideographs": function(A) {
              return 19968 <= A && A <= 40959
          },
          "Yi Syllables": function(A) {
              return 40960 <= A && A <= 42127
          },
          "Yi Radicals": function(A) {
              return 42128 <= A && A <= 42191
          },
          "Hangul Jamo Extended-A": function(A) {
              return 43360 <= A && A <= 43391
          },
          "Hangul Syllables": function(A) {
              return 44032 <= A && A <= 55215
          },
          "Hangul Jamo Extended-B": function(A) {
              return 55216 <= A && A <= 55295
          },
          "Private Use Area": function(A) {
              return 57344 <= A && A <= 63743
          },
          "CJK Compatibility Ideographs": function(A) {
              return 63744 <= A && A <= 64255
          },
          "Arabic Presentation Forms-A": function(A) {
              return 64336 <= A && A <= 65023
          },
          "Vertical Forms": function(A) {
              return 65040 <= A && A <= 65055
          },
          "CJK Compatibility Forms": function(A) {
              return 65072 <= A && A <= 65103
          },
          "Small Form Variants": function(A) {
              return 65104 <= A && A <= 65135
          },
          "Arabic Presentation Forms-B": function(A) {
              return 65136 <= A && A <= 65279
          },
          "Halfwidth and Fullwidth Forms": function(A) {
              return 65280 <= A && A <= 65519
          }
      },
      layers: [],
      styles: {},
      Mr: !0,
      Rr: function(A, i) {
          var e, C = this;
          if (!A)
              return !1;
          e = A,
          this.styles.zr = [];
          for (var o = this, g = 0, I = e.length; g < I; g += 1)
              !function(A) {
                  var t, B, g = e[A];
                  g.zIndex = A,
                  "line" === g.type && (g.paint["line-width"] = void 0 === g.paint["line-width"] ? 1 : g.paint["line-width"]),
                  g.paint["line-width"] && (i = g.paint["line-width"],
                  Q = 0,
                  g.paint["line-gap-width"] && (Q = g.paint["line-gap-width"]),
                  t = i,
                  B = Q,
                  o.styles.zr.push(i = function(g, i) {
                      var I = 0;
                      return B && (I = C.HU(i, B, g)),
                      g = C.HU(i, t, g),
                      I ? 2 * g + I : g
                  }
                  ),
                  g.paint["line-width"] = i,
                  g.paint["line-width"].Cr = o.styles.zr.length - 1,
                  delete g.paint["line-gap-width"]);
                  var i, I, Q = g["source-layer"];
                  Q ? (o.styles[Q] || (o.styles[Q] = []),
                  (i = g.filter) && (g.filters = [],
                  (I = function(A) {
                      if ("all" !== A[0])
                          "in" === A[0] || "!in" === A[0] ? g.filters.push([A[0], A[1], A.slice(2)]) : g.filters.push(A);
                      else
                          for (var i = 1; i < A.length; i += 1)
                              I(A[i])
                  }
                  )(i)),
                  o.styles[Q].push(g)) : o.styles[g.id] = g
              }(g);
          this.backgroundColor = this.HU({}, this.styles.land.paint["background-color"], 12)
      },
      Ar: function(A, i, g, I) {
          return I -= g,
          g = A - g,
          0 == I ? 0 : 1 === i ? g / I : (Math.pow(i, g) - 1) / (Math.pow(i, I) - 1)
      },
      Sr: function(A, i, g) {
          var I = i.base || 1
            , t = i.stops;
          if (g <= t[0][0])
              return this.HU(A, t[0][1], g);
          if (g >= t[t.length - 1][0])
              return this.HU(A, t[t.length - 1][1], g);
          for (var B = 1, Q = t.length; B < Q; B += 1)
              if (g > t[B - 1][0] && g <= t[B][0]) {
                  var C = this.HU(A, t[B - 1][1], g)
                    , e = this.HU(A, t[B][1], g);
                  if (C instanceof Array) {
                      for (var o = new Array(C.length), E = 0; E < C.length; E += 1) {
                          var h = e[E] - C[E];
                          o[E] = C[E] + this.Ar(g, I, t[B - 1][0]) * h
                      }
                      return o
                  }
                  return "number" != typeof C ? C : (h = e - C,
                  C + this.Ar(g, I, t[B - 1][0], t[B][0]) * h)
              }
      },
      Lr: function(A, i) {
          if (A) {
              var g = void 0;
              if ("string" == typeof A)
                  g = A;
              else if (A.stops)
                  for (var I = 0, t = A.stops.length; I < t; I += 1) {
                      if (A.stops[I][0] > i) {
                          g = A.stops[I][1];
                          break
                      }
                      g = A.stops[t - 1][1]
                  }
              else if ("interpolate" === A[0]) {
                  for (var B = A.slice(3), Q = [], C = 0; C < B.length; C += 2)
                      Q.push([B[C], B[C + 1]]);
                  for (I = 0,
                  t = Q.length; I < t; I += 1) {
                      if (Q[I][0] > i) {
                          g = Q[I][1];
                          break
                      }
                      g = Q[t - 1][1]
                  }
              }
              return g
          }
      },
      Tr: function(A, i) {
          if (A) {
              var g = void 0;
              if (A.stops)
                  for (var I = 0, t = A.stops.length; I < t; I += 1) {
                      if (A.stops[I][0] > i) {
                          g = A.stops[I][1];
                          break
                      }
                      g = A.stops[t - 1][1]
                  }
              else
                  g = A;
              return g
          }
      },
      Ir: function(A, i) {
          var g;
          if (void 0 === A)
              return 0;
          if ("function" == typeof A)
              return A(i);
          if ("number" != typeof A) {
              if (A.stops)
                  g = this.Sr(A.base || 1, A.stops, i);
              else if ("interpolate" === A[0]) {
                  for (var I = A.slice(3), t = [], B = 0; B < I.length; B += 2)
                      t.push([I[B], I[B + 1]]);
                  g = this.Sr(1, t, i)
              }
          } else
              g = A;
          return g
      },
      Dr: function(A, i, g, I) {
          var t;
          if (void 0 === i)
              return i;
          i instanceof Array ? t = i : i.stops && (t = this.Sr(A, i, g));
          var B = new Array(t.length);
          return t.forEach(function(A, i) {
              B[i] = A * I
          }),
          B
      },
      Pr: function(A, i, g) {
          for (var I, t, B, Q, C, e, o, E, h, a, l, n, r, s = "butt", w = "butt", c = "solid", y = "solid", x = 0, d = 0, p = 0; p < A.length; p += 1)
              "line" === A[p].type && (void 0 !== (B = A[p]).minzoom && B.minzoom > i || void 0 !== B.maxzoom && B.maxzoom < i || (I = B.paint,
              t = B.layout,
              void 0 === (B = I["line-opacity"]) && (B = 1),
              (B = this.HU(g, B, i)) && (this.WU(A[p].id, "-low") ? (Q = B,
              A[p].id,
              r = I["line-color"],
              C = this.HU(g, r, i),
              s = this.HU(g, t["line-cap"] || s, i),
              e = this.HU(g, I["line-width"], i),
              o = I["line-width"].Cr,
              this.Dr(g, I["line-dasharray"], i, e) && (c = "dashed"),
              d = Math.max(d, A[p].zIndex)) : this.WU(A[p].id, "-case") || this.WU(A[p].id, "-tracks") ? (E = !0,
              A[p].id,
              h = B,
              r = I["line-color"],
              a = this.HU(g, r, i),
              l = this.HU(g, I["line-width"], i),
              n = I["line-width"].Cr,
              w = this.HU(g, t["line-cap"] || w, i),
              this.Dr(g, I["line-dasharray"], i, l) && (y = "dashed"),
              x = Math.max(x, A[p].zIndex)) : this.WU(A[p].id, "-bg") ? (E = !0,
              A[p].id,
              h = B,
              r = I["line-color"],
              a = this.HU(g, r, i),
              w = this.HU(g, t["line-cap"] || w, i),
              l = this.HU(g, I["line-width"], i),
              n = I["line-width"].Cr,
              this.Dr(g, I["line-dasharray"], i, l) && (y = "dashed"),
              x = Math.max(x, A[p].zIndex)) : (Q = B,
              A[p].id,
              r = I["line-color"],
              C = this.HU(g, r, i),
              s = this.HU(g, t["line-cap"] || s, i),
              e = this.HU(g, I["line-width"], i),
              o = I["line-width"].Cr,
              this.Dr(g, I["line-dasharray"], i, e) && (c = "dashed"),
              d = Math.max(d, A[p].zIndex)))));
          if (e)
              return {
                  facezIndex: d,
                  borderzIndex: x,
                  faceStrokeStyle: c,
                  faceOpacity: Q,
                  faceDashArray: void 0,
                  faceWidth: e,
                  faceColor: C,
                  faceLineCap: s,
                  borderLineCap: w,
                  isOutline: E,
                  borderOpacity: h,
                  borderStrokeStyle: y,
                  borderDashArray: void 0,
                  borderColor: a,
                  borderWidth: l,
                  faceWidthFunIndex: o,
                  borderWidthFunIndex: n
              }
      },
      QU: function(A) {
          return A instanceof Array && -1 < this.KU(["geometry-type", "to-number", "case", "step", "is-supported-script", "concat", "get", "literal", "match", "interpolate", "to-string", "string", "coalesce", "has", "+", "==", "!=", ">", "<", ">=", "<=", "in", "!in"], A[0]) || "object" == typeof A && A.stops
      },
      KU: function(A, i) {
          if (!A || !A.length)
              return -1;
          if (A.indexOf)
              return A.indexOf(i);
          for (var g = 0; g < A.length; g += 1)
              if (A[g] === i)
                  return g;
          return -1
      },
      WU: function(A, i) {
          return A.endsWith ? A.endsWith(i) : !(A.length < i.length) && A.substr(A.length - i.length) === i
      },
      Vr: function(A, i, g) {
          for (var I = 0, t = 0; t < A.length; t += 1) {
              var B, Q, C, e, o, E, h = A[t];
              "line" === A[t].type ? h.minzoom && h.minzoom > i || (I = Math.max(I, h.zIndex),
              C = (o = h.paint)["line-color"],
              B = this.HU(g, C, i),
              Q = this.HU(g, o["line-width"], i),
              C = void 0 === o["line-opacity"] ? 1 : o["line-opacity"],
              e = this.HU(g, C, i)) : "fill" === A[t].type && (h.minzoom && h.minzoom > i || (I = Math.max(I, h.zIndex),
              h = (o = h.paint)["fill-color"],
              E = this.HU(g, h, i)))
          }
          return {
              zIndex: I,
              fillColor: E,
              fillOpacity: 1,
              strokeWeight: Q,
              strokeColor: B,
              strokeOpacity: e
          }
      },
      Xr: function(A, i, g) {
          var I = A[0]
            , t = I.paint
            , B = I.layout;
          if ("symbol" === I.type) {
              var Q = this.HU(g, t["text-color"], i)
                , C = this.HU(g, t["text-halo-color"], i)
                , e = this.HU(g, t["text-halo-width"], i)
                , o = void 0 === t["icon-opacity"] ? 1 : t["icon-opacity"]
                , E = this.HU(g, o, i)
                , h = void 0 === t["text-opacity"] ? 1 : t["text-opacity"]
                , a = this.HU(g, h, i)
                , l = void 0
                , n = void 0;
              0 === e && (C = ""),
              B["icon-image"] && (l = this.HU(g, B["icon-image"], i),
              (s = this.kr[l]) && E && (s.height,
              n = [-s.width / 2, -s.height / 2, s.width, s.height, s.x, s.y, s.width, s.height]));
              var r = this.HU(g, B["icon-rotation-alignment"], i)
                , A = B["text-max-width"]
                , o = this.HU(g, B["text-anchor"] || "center", i);
              (t = this.HU(g, B["text-font"], i) || "Microsoft YaHei")instanceof Array && (t = t.join(" "));
              var h = B["text-offset"] ? this.HU(g, B["text-offset"], i) : [0, 0]
                , e = this.HU(g, B["text-size"], i)
                , s = "";
              return a && B["text-field"] && (s = this.HU(g, B["text-field"] || "{name}", i)),
              {
                  zIndex: I.zIndex,
                  Jr: r,
                  Kr: Q || "black",
                  Qr: C,
                  th: (I.minzoom || 1) + .5,
                  ih: (I.maxzoom || 20) + .5,
                  eh: E,
                  nh: l,
                  qU: n,
                  oh: A,
                  textAnchor: o,
                  ah: t,
                  sh: h,
                  rh: e,
                  name: s
              }
          }
      },
      lh: function(A, i, g) {
          var I = []
            , t = this.Pr(A, i, g);
          return t && (t.type = "line",
          I.push(t)),
          (g = this.uh(A, i, g)).length && I.push.apply(I, g),
          I
      },
      uh: function(A, i, g) {
          for (var I = [], t = 0; t < A.length; t += 1) {
              var B = this.Xr([A[t]], i, g);
              B && I.push(B)
          }
          return I
      },
      YU: function(A, i, g) {
          for (var I = 1, t = i.length - 1; I < t; I += 2)
              if (this.HU(A, i[I], g))
                  return this.HU(A, i[I + 1], g);
          return this.HU(A, i[i.length - 1], g)
      },
      JU: function(A, i, g) {
          var I = this.HU(A, i[1], g)
            , t = this.HU(A, i[2], g);
          return [I, this.HU(A, i[3], g)].join(t)
      },
      ZU: function(A, i, g) {
          var I = i[1]
            , t = 1;
          "exponential" === I[0] ? t = I[1] : "linear" === I[0] && (t = 1);
          for (var B = i.slice(3), Q = [], C = 0; C < B.length; C += 2)
              Q.push([B[C], B[C + 1]]);
          return t = this.Sr(A, {
              base: t,
              stops: Q
          }, g),
          this.HU(A, t, g)
      },
      XU: function(A, i, g) {
          "zoom" === i[1][0] || "get" === i[1][0] && (g = A.properties[i[1][1]]);
          for (var I = [], t = 2, B = i.length; t < B; t += 2)
              I.push([parseFloat(i[t - 1]) || 0, this.HU(A, i[t], g)]);
          if (g < I[0][0])
              return this.HU(A, I[0][1], g);
          if (g >= I[I.length - 1][0])
              return this.HU(A, I[I.length - 1][1], g);
          for (t = 1,
          B = I.length; t < B; t += 1)
              if (g <= I[t][0])
                  return this.HU(A, I[t - 1][1], g)
      },
      tV: function(A, i, g) {
          var I = this.HU(A, i[1], g);
          if (I) {
              for (var t = 2, B = i.length - 1; t < B; t += 2)
                  if (i[t]instanceof Array ? -1 !== this.KU(i[t], I) : i[t] === I)
                      return this.HU(A, i[t + 1], g);
              return this.HU(A, i[i.length - 1], g)
          }
      },
      HU: function(A, i, g) {
          if (null == i)
              return null;
          var I = typeof i;
          if ("number" == I || "boolean" == I)
              return i;
          if ("function" == I)
              return i(g, A);
          if (!this.QU(i)) {
              if ("string" != typeof i)
                  return i;
              if (-1 === this.KU(i, "{"))
                  return i;
              for (var t, B = [], Q = 0, C = 0, e = i.length; C < e; C += 1)
                  "{" === i[C] && (Q = C),
                  "}" === i[C] && (t = C,
                  B.push(i.substring(Q, t + 1)));
              for (var o, C = 0, e = B.length; C < e; C += 1) {
                  if (void 0 === (o = A.properties[B[C].substring(1, B[C].length - 1)]))
                      return "";
                  i = i.replace(B[C], o)
              }
              return i
          }
          if ("literal" === i[0])
              return i[1];
          if (i.stops)
              return this.Sr(A, i, g);
          if ("get" === i[0])
              return this.Hr && "name" === i[1].substr(0, 4) && (A.properties["name_zh-Hant"] || A.properties["name_zh-Hans"]) || A.properties[i[1]];
          if ("to-number" === i[0])
              return parseFloat(this.HU(A, i[1], g));
          if ("to-string" === i[0])
              return (o = this.HU(A, i[1], g)) ? o + "" : "";
          if ("string" === i[0])
              return (o = this.HU(A, i[1], g)) ? o + "" : "";
          if ("match" === i[0])
              return this.tV(A, i, g);
          if ("case" === i[0])
              return this.YU(A, i, g);
          if ("interpolate" === i[0])
              return this.ZU(A, i, g);
          if ("concat" === i[0])
              return this.JU(A, i, g);
          if ("step" === i[0])
              return this.XU(A, i, g);
          if ("coalesce" !== i[0])
              return "+" === i[0] ? this.HU(A, i[1], g) + this.HU(A, i[2], g) : "has" === i[0] ? void 0 !== A.properties[i[1]] : "is-supported-script" === i[0] ? this.iV(this.HU(A, i[1], g)) : "==" === i[0] ? this.HU(A, i[1], g) === this.HU(A, i[2], g) : "!=" === i[0] ? this.HU(A, i[1], g) !== this.HU(A, i[2], g) : ">" === i[0] ? this.HU(A, i[1], g) > this.HU(A, i[2], g) : "<" === i[0] ? this.HU(A, i[1], g) < this.HU(A, i[2], g) : ">=" === i[0] ? this.HU(A, i[1], g) >= this.HU(A, i[2], g) : "<=" === i[0] ? this.HU(A, i[1], g) <= this.HU(A, i[2], g) : "in" === i[0] ? -1 < this.KU(this.HU(A, i[2], g), this.HU(A, i[1], g)) : "!in" === i[0] ? -1 === this.KU(this.HU(A, i[2], g), this.HU(A, i[1], g)) : "geometry-type" === i[0] ? 3 === A.type ? "Polygon" : 2 === A.type ? "LineString" : "Point" : void 0;
          for (C = 1; C < i.length; C += 1) {
              var E = this.HU(A, i[C], g);
              if (E)
                  return E
          }
      },
      eV: function(A, i) {
          return !(!i && (1424 <= A && A <= 2303 || this.VU["Arabic Presentation Forms-A"](A) || this.VU["Arabic Presentation Forms-B"](A)) || 2304 <= A && A <= 3583 || 3840 <= A && A <= 4255 || this.VU.Khmer(A))
      },
      iV: function(A) {
          if (!A)
              return !1;
          for (var i = 0, g = A.length; i < g; i += 1) {
              var I = A[i];
              if (!this.eV(I.charCodeAt(0), !1))
                  return !1
          }
          return !0
      },
      getStyle: function(C, e, A, o) {
          var i = C.type
            , E = (C.properties.class,
          C.properties.type,
          this)
            , h = this.styles[e];
          if (h) {
              var g = function() {
                  for (var A = [], i = 0, g = h.length; i < g; i += 1) {
                      var I = h[i];
                      if (I.filters) {
                          for (var t = !0, B = 0; B < I.filters.length; B += 1) {
                              var Q = I.filters[B];
                              if (!E.HU(C, Q, o)) {
                                  t = !1;
                                  break
                              }
                          }
                          t && A.push(I)
                      } else
                          I.id === e && A.push(I)
                  }
                  return A
              }();
              if (g.length)
                  return 1 !== i ? 2 === i ? this.lh(g, o, C) : 3 === i ? this.Vr(g, o, C) : void 0 : this.Xr(g, o, C)
          }
      },
      fh: function(A, i) {
          for (var g = 1 << 20 - i.z, I = A.extent / 256, t = 0; t < A.style.length; t += 1) {
              var B = A.style[t];
              if ("line" !== B.type) {
                  var Q = "";
                  B.hh && (Q = A.properties[B.hh]);
                  for (var C = this.Mr, e = C ? 1.8 * B.rh : B.rh, o = A.lines[0], E = 1; E < A.lines.length; E += 1)
                      o.length < A.lines[E].length && (o = A.lines[E]);
                  for (var h = [], a = 0; a < o.length; a += 1) {
                      var l = [i.x * g * 256 + o[a][0] / I * g, 256 * i.y * g + o[a][1] / I * g];
                      h.push(l)
                  }
                  var n = B.textAnchor;
                  this._r.font = B.rh + "px " + B.ah;
                  var r = this._r.measureText(Q).width
                    , s = 0
                    , w = 0
                    , c = B.nh && "viewport" === B.Jr;
                  if (B.nh) {
                      var s = (-A.properties.dh || 0) - 100
                        , y = polyfill.kS._S(h, polyfill.kS.distanceOfLine(h) / 2) || []
                        , x = y[2];
                      "viewport" !== B.Jr && 1 < h.length && (w = 360 - (new polyfill.Pixel(h[x + 1][0] - h[x][0],h[x + 1][1] - h[x][1]).direction() || 0)),
                      h = [y[0], y[1]]
                  } else {
                      if (this.vh(o))
                          continue;
                      if (90 < (d = new polyfill.Pixel(o[1][0] - o[0][0],o[1][1] - o[0][1]).direction() || 0) && d < 270 && (h.reverse(),
                      o.reverse()),
                      s = -A.properties.dh - 1e6,
                      polyfill.kS.distanceOfLine(h) / g < 1.5 * r)
                          continue
                  }
                  var p, d = {
                      margin: this.mh,
                      foreign: !0,
                      zIndex: B.zIndex,
                      yh: w,
                      rank: s,
                      font: B.ah,
                      Kr: B.Kr,
                      Qr: B.Qr,
                      rh: e,
                      id: A.id,
                      xh: h,
                      name: Q,
                      textAlign: "center",
                      textBaseline: "center" === n ? "middle" : "top",
                      bh: [],
                      gh: new Array,
                      wh: c,
                      _h: !c,
                      kh: !B.nh,
                      th: B.th,
                      Mh: !0,
                      Rh: new Array,
                      zh: !1,
                      zoom: i.z
                  };
                  B.nh ? (w = 0,
                  s = B.nh.replace("{maki}", A.properties.maki).replace("{shield}", A.properties.shield).replace("{reflen}", A.properties.reflen).replace("{network}", A.properties.network),
                  (c = this.kr[s]) && B.eh && (w = c.height,
                  p = [-c.width / 2, -c.height / 2, c.width, c.height, c.x, c.y, c.width, c.height],
                  d.gh.push(p)),
                  Q && (c = s = void 0,
                  c = "center" === n ? (s = 0,
                  -e / 2) : s = t * (e + 2) + w / 2,
                  d.Rh.push([Q, B.ah, e, B.Kr, B.Qr, 0, 0, !1, [0, s, C ? 1.8 * r : r, e]]),
                  d.gh.push(p = [-r / 2, c, r, e])),
                  (w || Q) && (Q ? d.id = "mapbox_guideboard_" + polyfill.Util.stamp(d) : (d.id = "mapbox_singleway_" + polyfill.Util.stamp(d),
                  d.zh = !0),
                  i.labels.push(d))) : Q && (d.id = "mapbox_roadname_" + polyfill.Util.stamp(d),
                  i.labels.push(d))
              }
          }
      },
      Sh: function(A, i) {
          var g = 1 << 20 - i.z
            , I = A.extent / 256
            , t = A.Ch.xh[0][0]
            , B = A.properties[A.style.hh];
          if (B) {
              var Q = this.Mr ? 2 * A.style.rh : A.style.rh
                , g = [i.x * g * 256 + t[0] / I * g, 256 * i.y * g + t[1] / I * g]
                , C = A.style.textAnchor
                , e = {
                  foreign: !0,
                  margin: this.mh,
                  zIndex: A.style.zIndex,
                  rank: -A.properties.dh || 0,
                  id: A.id,
                  xh: g,
                  name: B,
                  textAlign: "center",
                  textBaseline: "center" === C ? "middle" : "top",
                  bh: [],
                  gh: new Array,
                  yh: 0,
                  pos: [t[0] / I, t[1] / I],
                  wh: !0,
                  th: A.style.th,
                  Mh: !0,
                  Rh: new Array
              }
                , o = 0;
              A.style.nh && (a = A.style.nh.replace("{maki}", A.properties.maki).replace("{shield}", A.properties.shield).replace("{reflen}", A.properties.reflen).replace("{network}", A.properties.network),
              (a = this.kr[a]) && A.style.eh && (o = a.height,
              w = [-a.width / 2, -a.height / 2, a.width, a.height, a.x, a.y, a.width, a.height],
              e.gh = [w]));
              var E, a = B.indexOf("("), h = 0 < a ? [B.substr(0, a), B.substr(a)] : 20 < B.length && 1 < (E = B.split(" ")).length ? (a = Math.floor(E.length / 2),
              [E.slice(0, a).join(" "), E.slice(a).join(" ")]) : [B];
              this._r.font = Q + "px " + A.style.ah;
              for (var l = 0; l < h.length; l += 1) {
                  var n = h[l]
                    , r = this._r.measureText(n).width
                    , s = void 0;
                  e.Rh.push([n, A.style.ah, Q, A.style.Kr, A.style.Qr, 0, 0, !1, [0, s = "center" === C ? (-.5 * h.length + l) * (Q + 2) : l * (Q + 2) + o / 2, r, Q]]);
                  var w = [-r / 2, s, r, Q];
                  e.gh.push(w)
              }
              return i.labels.push(e),
              e
          }
      },
      Lh: function(A) {
          var i, g = [], I = [];
          for (i in A.layers)
              if (A.layers.hasOwnProperty(i)) {
                  for (var t = A.layers[i], B = [], Q = 0; Q < t.Ah.length; Q += 1)
                      3 == +(C = t.Ah[Q]).type ? g.push(C) : 2 == +C.type && B.push(C);
                  for (Q = 0; Q < B.length; Q += 1) {
                      var C, e = (C = B[Q]).style;
                      e.isOutline && I.push([C, {
                          zIndex: e.borderzIndex,
                          Th: e.borderWidthFunIndex,
                          strokeStyle: e.borderStrokeStyle,
                          strokeOpacity: e.borderOpacity,
                          strokeDasharray: e.borderDashArray,
                          lineCap: e.borderLineCap,
                          strokeWeight: e.borderWidth,
                          strokeColor: e.borderColor
                      }]),
                      I.push([C, {
                          zIndex: e.facezIndex,
                          Th: e.faceWidthFunIndex,
                          strokeStyle: e.faceStrokeStyle,
                          strokeOpacity: e.faceOpacity,
                          strokeDasharray: e.faceDashArray,
                          lineCap: e.faceLineCap,
                          strokeWeight: e.faceWidth,
                          strokeColor: e.faceColor
                      }])
                  }
              }
          I.sort(function(A, i) {
              return A[1].zIndex > i[1].zIndex ? 1 : -1
          }),
          A.polygons = g,
          A.Dh = I,
          delete A.layers
      },
      Ph: function(A) {
          A.type,
          A.lines
      },
      jh: function(A, i, g, I) {
          this.mh = 3;
          var t = i.vt;
          t.labels = [];
          var B, Q = [];
          for (B in t.layers)
              if (t.layers.hasOwnProperty(B)) {
                  var C = t.layers[B]
                    , e = C.Ah;
                  Q.push(B);
                  for (var o = 0, E = e.length; o < E; o++) {
                      var h = e[o];
                      h.Fh = C.name,
                      h.style = this.getStyle(h, C.name, !0, t.z - 1),
                      h.style,
                      this.Ph(h),
                      h.style && (1 == +h.type || 2 == +h.type && h.style.length && (this.fh(h, t),
                      "line" === h.style[0].type && (h.style = h.style[0])))
                  }
              }
          this.Lh(t),
          this.Eh || (this.Eh = !0),
          g.features = t.labels,
          t.labels = null,
          Q.length > this.layers.length && (this.layers = Q),
          I(null, {
              vt: t
          })
      }
  }
    , MapboxStyle = (Z5.prototype.getMapboxStyle = function() {
      return mbStyle
  }
  ,
  Z5);
  function Z5(A) {
      var i = null
        , g = "";
      A && ((A = A.KG) && A.styles && (i = JSON.parse(A.styles).layers),
      A && A.vectorMapForeign && (g = A.vectorMapForeign)),
      mbStyle.Rr(i, g)
  }
  var MapboxSourceWorker = (dg.prototype.YE = function(A) {
      var i = polyfill.Util.getOptimalZoom(this.WW);
      A(this.sQ, {
          ZL: this.WW,
          optimalZoom: i,
          cb: function() {}
      }),
      this.sQ = {}
  }
  ,
  dg.prototype.bw = function(A, t, B, Q, i, g, C) {
      var e = this
        , o = new XMLHttpRequest;
      return o.onreadystatechange = function() {
          var A, i, g, I;
          4 === o.readyState && 200 === o.status && (g = new polyfill.pw(new Uint8Array(o.response)),
          (I = new polyfill.tW(g)).nG("mapbox"),
          A = t.z,
          i = t.x,
          g = t.y,
          I.data = {},
          I = e.Ow(I, {
              x: t.x,
              y: t.y,
              z: t.z,
              projectionId: B,
              tileSize: Q
          }),
          e.wQ(I),
          I.zo = new polyfill.ca(A,i,g),
          e.FQ(I),
          delete I.road,
          C(null, polyfill.Ln({
              zo: t
          }, I)))
      }
      ,
      o.open("GET", A, !0),
      o.responseType = "arraybuffer",
      o.send(),
      {
          cancel: function() {
              o.abort()
          }
      }
  }
  ,
  dg.prototype.wQ = function(A) {
      A.stencil = {};
      var i = new polyfill.fQ;
      A.stencil.Oc = i,
      A.stencil.Dc = new polyfill.K_,
      A = A.stencil.Dc.Nx(A.MQ),
      i.add({}, A)
  }
  ,
  dg.prototype.Ow = function(g, A) {
      var I = A.x
        , t = A.y
        , o = A.z
        , B = A.tileSize
        , E = A.projectionId;
      g.z = o,
      g.x = I,
      g.y = t,
      A = polyfill.ProjectionManager.getProjection(E).getResolution(o),
      A = polyfill.$Q(I, t, o, A, B),
      g.Ro = A,
      g.MQ = [A[0], A[1], A[2], A[1], A[2], A[3], A[0], A[3]],
      g.zS = polyfill.lcs.getLocalByCoord([g.Ro[0], g.Ro[1]]),
      g.localCoord = g.zS;
      for (var Q = Object.keys(g.layers), i = 0; i < Q.length; i++)
          !function(A) {
              var e = g.layers[Q[A]]
                , i = e.Cw
                , A = e.extent;
              e.Ah = [],
              e.scale = B / A,
              e.ox = B * I,
              e.oy = B * t,
              polyfill.forEach(i, function(A, i) {
                  if ((A = e.Gw(i)).Dw(),
                  e.Ah.push(A),
                  A.lines && A.lines.length && (2 === A.type || 3 === A.type || 1 === A.type)) {
                      A.Rw = [];
                      for (var g = 0, I = A.lines.length; g < I; g++) {
                          for (var t = [], B = 0, Q = A.lines[g].length; B < Q; B++) {
                              var C = [e.ox + e.scale * A.lines[g][B][0], e.oy + e.scale * A.lines[g][B][1]]
                                , C = [(C = polyfill.V[E].Xs(C[0], C[1], o))[0], C[1]];
                              t.push(C)
                          }
                          A.Rw.push(t)
                      }
                  }
              })
          }(i);
      return this.uW(g, o),
      this.xw(g),
      this.zw(g),
      g
  }
  ,
  dg.prototype.uW = function(A, i) {
      var g, I = [], t = [], B = [], Q = (this.kQ,
      null);
      for (g in this.parent && this.parent.QG && (Q = this.parent.QG),
      this.$h = new MapboxStyle({
          KG: Q
      }).getMapboxStyle(),
      A.bgColor = this.$h.backgroundColor,
      A.layers)
          if (A.layers.hasOwnProperty(g))
              for (var C = A.layers[g], e = 0; e < C.Ah.length; e += 1) {
                  var o, E = C.Ah[e], h = this.$h.getStyle(E, C.name, !0, i);
                  h && (E.style = h,
                  3 === E.type ? I.push(E) : 2 === E.type ? t.push(E) : 1 !== E.type || (o = h.name) && ((E = {
                      name: o,
                      position: E.Rw[0],
                      id: E.id,
                      minzoom: h.th,
                      maxzoom: h.ih
                  }).style = h,
                  B.push(E)))
              }
      t.sort(function(A, i) {
          return A.style && i.style && A.style.zIndex > i.style.zIndex ? 1 : -1
      }),
      I.sort(function(A, i) {
          return A.style && i.style && A.style.zIndex > i.style.zIndex ? 1 : -1
      }),
      A.polygons = I,
      A.Dh = t,
      A.data.poilabel = ((Q = {})[A.z + "," + A.x + "," + A.y] = B,
      Q),
      delete A.layers
  }
  ,
  dg.prototype.startsWith = function(A, i) {
      return A.startsWith ? A.startsWith(i) : A.substr(0, i.length) === i
  }
  ,
  dg.prototype.argbHex2Rgba = function(A) {
      for (var i = [], g = 0, I = A.length; g < I; g += 2)
          i.push(parseInt(A.substr(g, 2), 16) / 255);
      return i.push(i.shift()),
      i
  }
  ,
  dg.prototype.uQ = function(A, i, g) {
      return g < 0 && (g += 1),
      1 < g && --g,
      g < 1 / 6 ? A + 6 * (i - A) * g : g < .5 ? i : g < 2 / 3 ? A + (i - A) * (2 / 3 - g) * 6 : A
  }
  ,
  dg.prototype.GQ = function(A, i, g, I) {
      var t, B, Q;
      return 0 === i ? t = B = Q = g : (t = this.uQ(i = 2 * g - (g = g < .5 ? g * (1 + i) : g + i - g * i), g, A + 1 / 3),
      B = this.uQ(i, g, A),
      Q = this.uQ(i, g, A - 1 / 3)),
      [t, B, Q, I]
  }
  ,
  dg.prototype.color2RgbaArray = function(A, i) {
      if (void 0 === i && (i = 1),
      !A)
          return null;
      var g = A.toString();
      if (this.yQ[g])
          return this.yQ[g];
      if (A instanceof Array)
          return A;
      if (this.startsWith(A, "hsla")) {
          var I = A.substr(5).split(",")
            , t = parseInt(I[0], 10) / 360
            , B = parseInt(I[1], 10) / 100
            , Q = parseInt(I[2], 10) / 100
            , C = parseFloat(I[3])
            , e = this.GQ(t, B, Q, C);
          return this.yQ[g] = e
      }
      return this.startsWith(A, "hsl") ? (I = A.substr(4).split(","),
      t = parseInt(I[0], 10) / 360,
      B = parseInt(I[1], 10) / 100,
      Q = parseInt(I[2], 10) / 100,
      e = this.GQ(t, B, Q, i),
      this.yQ[g] = e) : this.startsWith(A, "#") ? 7 === A.length ? (e = this.argbHex2Rgba("ff" + A.substr(1)),
      this.yQ[g] = e) : 9 === A.length ? (e = this.argbHex2Rgba(A.substr(1)),
      this.yQ[g] = e) : void 0 : this.startsWith(A, "rgba") ? (I = A.substr(5).split(","),
      [parseInt(I[0], 10) / 255, parseInt(I[1], 10) / 255, parseInt(I[2], 10) / 255, C = parseFloat(I[3])]) : this.startsWith(A, "rgb") ? (I = A.substr(4).split(","),
      [parseInt(I[0], 10) / 255, parseInt(I[1], 10) / 255, parseInt(I[2], 10) / 255, C = 1]) : void 0
  }
  ,
  dg.prototype.zw = function(A) {
      if (!A || !A.Dc) {
          var i = new polyfill.fQ;
          A.Oc = i,
          A.Dc = new polyfill.K_;
          var g = {
              fillColor: this.color2RgbaArray(A.bgColor),
              zIndex: 0
          }
            , I = A.Dc.Nx(A.MQ);
          i.add(g, I);
          for (var t = 0, B = A.polygons; t < B.length; t++) {
              var Q = B[t]
                , C = Q.style;
              if (C && C.fillColor) {
                  C.fillColor = this.color2RgbaArray(C.fillColor);
                  var e = Q.Rw;
                  if (1 < e.length) {
                      for (var o = [], E = 0; E < e.length; E++)
                          polyfill.kS.isClockwise(e[E]) ? o.push([E]) : o.length && o[o.length - 1].push(E);
                      for (var h = 0; h < o.length; h++) {
                          var a = o[h];
                          if (1 < a.length) {
                              for (var l = [], n = [], r = 0; r < a.length; r++) {
                                  var s = e[a[r]];
                                  0 < r && l.push(n.length / 2);
                                  for (var w = 0; w < s.length; w++) {
                                      var c = s[w];
                                      n.push(c[0], c[1])
                                  }
                              }
                              var y = A.Dc.Nx(n, l);
                              i.add(C, y)
                          } else {
                              for (n = [],
                              s = e[a[0]],
                              w = 0; w < s.length; w++) {
                                  var x = s[w];
                                  n.push(x[0], x[1])
                              }
                              y = A.Dc.Nx(n),
                              i.add(C, y)
                          }
                      }
                  } else {
                      for (var d = e.length, n = [], p = 0; p < d; p++) {
                          var D = e[p];
                          if (0 < D.length)
                              for (w = 0; w < D.length; w++)
                                  h = D[w],
                                  n.push(h[0], h[1])
                      }
                      Q = A.Dc.Nx(n),
                      i.add(C, Q)
                  }
              }
          }
          delete A.polygons
      }
  }
  ,
  dg.prototype.xw = function(A) {
      if (!A || !A.$c) {
          var i = []
            , g = this.kQ;
          A.$c = new polyfill.J_;
          var I = new polyfill.fQ;
          A.Uc = I;
          for (var t = 0, B = A.Dh; t < B.length; t++) {
              var Q = B[t]
                , C = Q.Rw
                , e = C.length
                , o = 0
                , E = 0;
              Q.style && Q.style[0] && Q.style[0].borderColor && (Q.style[0].borderColor = this.color2RgbaArray(Q.style[0].borderColor)),
              Q.style && Q.style[0] && Q.style[0].faceColor && (Q.style[0].faceColor = this.color2RgbaArray(Q.style[0].faceColor));
              for (var a = (h = Q.style || [])[0], l = h[1], n = 0; n < e; n++) {
                  var r = C[n];
                  if (0 < r.length) {
                      for (var s = [], w = 0; w < r.length; w++) {
                          var c = r[w];
                          s.push(c[0], c[1])
                      }
                      var y = A.$c.hb(s, {
                          X_: 0,
                          lineJoin: "miter",
                          lineCap: "round"
                      });
                      o += y.Iw,
                      E += y.distance
                  }
              }
              if (0 < o && (I.add(Q.style, o),
              Q.distance = E),
              a && a.borderColor && (Q.style[0].borderColor = this.color2RgbaArray(a.borderColor)),
              a && a.faceColor && (Q.style[0].faceColor = this.color2RgbaArray(a.faceColor)),
              l && (h = l.name || "")) {
                  Q = l.Kr,
                  a = l.Qr,
                  Q && !g[Q] && (g[Q] = polyfill.Util.color2RgbaArray(Q)),
                  a && !g[a] && (g[a] = polyfill.Util.color2RgbaArray(a)),
                  l.Kr = g[Q],
                  l.Qr = g[a];
                  for (var h, x = (h = {
                      style: l,
                      path: [],
                      name: h,
                      distance: E
                  }).path, d = 0; d < e; d++)
                      for (var p = C[d], w = 0; w < p.length; w++)
                          c = p[w],
                          x.push(c[0], c[1]);
                  i.push(h)
              }
          }
          A.road = i,
          delete A.Dh
      }
  }
  ,
  dg.prototype.FQ = function(A) {
      var i, g = {};
      for (i in A)
          A.hasOwnProperty(i) && "fillBucket" !== i && "fillSegements" !== i && "lineBucket" !== i && "lineSegements" !== i && (g[i] = A[i]);
      this.sQ[A.zo.key] = {
          tile: g,
          params: {
              scale: this.parent.params.scale,
              tag: "all"
          }
      }
  }
  ,
  dg), _a$1;
  function dg(A) {
      this.parent = A,
      this.id = "mapbox",
      this.sQ = {},
      this.yQ = {},
      this.kQ = {}
  }
  var mapBoxSprite = "https://webapi.amap.com/style_icon/sprite_v8@2x.png", DefaultIconInfo = (_a$1 = {
      TW: {
          img: "https://vdata.amap.com/style_icon/2.0/icon-normal-big.png",
          width: 512,
          height: 1024,
          startX: 0,
          startY: 0,
          status: "loaded",
          type: "icon",
          ext: {
              hv: 0
          }
      },
      RW: {
          img: "https://vdata.amap.com/style_icon/2.0/icon-biz-big.png",
          width: 512,
          height: 1024,
          startX: 0,
          startY: 1024,
          status: "loaded",
          type: "icon",
          ext: {
              hv: 1
          }
      }
  },
  _a$1[mapBoxSprite] = {
      img: mapBoxSprite,
      width: 1024,
      height: 926,
      startX: 0,
      startY: 2048,
      status: "loaded",
      type: "icon",
      ext: {
          hv: 2
      }
  },
  _a$1), ImageManagerWorker = (b7 = polyfill.Event,
  polyfill.Ei(c7, b7),
  c7.prototype.loadImage = function(A, i) {
      var g = i.name
        , I = i.type
        , t = i.cb
        , B = g || A;
      (g = this.Fs[B]) && g.status === polyfill.uc.LOADED ? t(g, i) : g && g.status === polyfill.uc.LOADING ? (this.Mc[B] || (this.Mc[B] = []),
      this.Mc[B].push({
          cb: t,
          opts: i
      })) : ("icon" === I && (DefaultIconInfo[A] ? i.hv = DefaultIconInfo[A].ext.hv : i.hv = this.Uw,
      this.Uw++),
      this.Rc(A, i))
  }
  ,
  c7.prototype.loadImages = function(A, i) {
      var t = this
        , g = i.cb
        , B = i.type;
      if (0 !== Object.keys(A).filter(function(A) {
          return !t.Fs[A]
      }).length) {
          var Q = []
            , C = [];
          if (A.length) {
              for (var I = 0, e = A; I < e.length; I++)
                  !function(I) {
                      var A = new Promise(function(g, A) {
                          t.loadImage(I, {
                              cb: function(A, i) {
                                  C.push(t.Fs[I]),
                                  g()
                              },
                              type: B
                          })
                      }
                      );
                      Q.push(A)
                  }(e[I]);
              Promise.all(Q).then(function() {
                  g(C)
              }).catch(function() {
                  g(C)
              })
          } else
              g(C)
      } else
          g()
  }
  ,
  c7.prototype.Vw = function(A, i) {
      var t = this
        , B = i.cb
        , Q = A.filter(function(A) {
          return !t.Fs[A]
      });
      if (0 !== Q.length) {
          var g = []
            , C = [];
          if (A.length) {
              for (var I = 0, e = A; I < e.length; I++)
                  !function(I) {
                      var A = new Promise(function(g, A) {
                          t.loadImage(I, {
                              cb: function(A, i) {
                                  C.push(t.Fs[I]),
                                  g()
                              },
                              type: "icon"
                          })
                      }
                      );
                      g.push(A)
                  }(e[I]);
              Promise.all(g).then(function() {
                  var A = [];
                  if (0 < Q.length) {
                      for (var i = 0, g = Q; i < g.length; i++) {
                          var I = g[i];
                          A.push({
                              url: I,
                              data: t.getImage(I)
                          })
                      }
                      t.emit("iconImageLoaded", {
                          data: A
                      })
                  }
                  B(C)
              }).catch(function() {
                  B(C)
              })
          } else
              B(C)
      } else
          B([])
  }
  ,
  c7.prototype.getImage = function(A) {
      return this.Fs[A = void 0 === A ? "" : A]
  }
  ,
  c7.prototype.destory = function() {
      var A;
      this.Fs = ((A = {})[DefaultIconInfo.TW.img] = DefaultIconInfo.TW,
      A[DefaultIconInfo.RW.img] = DefaultIconInfo.RW,
      A)
  }
  ,
  c7.prototype.Rc = function(i, g) {
      var I = this
        , t = g.name
        , A = g.ext
        , B = void 0 === A ? {} : A
        , Q = void 0 === (A = g.type) ? "other" : A
        , C = g.cb
        , e = g.imageBitmap
        , o = this.Fs;
      o[t || i] = {
          status: polyfill.uc.LOADING,
          startX: 0,
          startY: 1024 * (g.hv || 0),
          type: Q,
          height: 0,
          width: 0
      },
      polyfill.Yw.send(i, {
          Me: "arraybuffer",
          qw: function(A) {
              e ? (console.time("createImageBitmap"),
              createImageBitmap(new Blob([new Uint8Array(A)])).then(function(A) {
                  console.timeEnd("createImageBitmap"),
                  A = new polyfill.WQ(i,A,{
                      imageBitmap: !0
                  }),
                  I.qQ(t || i, A, C, g, Q, B)
              })) : (A = new polyfill.WQ(i,A),
              I.qQ(t || i, A, C, g, Q, B))
          },
          Aw: function(A) {
              console.log(A),
              o[A = t || i].status = polyfill.uc.ERROR,
              C(o[A], g)
          }
      })
  }
  ,
  c7.prototype.qQ = function(A, i, g, I, t, B) {
      var Q = this.Fs;
      if ("success" !== i.status)
          return console.error("createObjectURL fail"),
          Q[A].status = polyfill.uc.ERROR,
          void g(Q[A], I);
      if ("icon" === t ? (B.hv = I.hv,
      Q[A] = DefaultIconInfo[A] || {
          ext: B,
          type: t,
          startX: 0,
          startY: 1024 * (I.hv || 0),
          height: 1024,
          width: 512,
          status: polyfill.uc.LOADED
      },
      Q[A].data = i) : Q[A] = {
          ext: B,
          type: t,
          startX: 0,
          startY: 0,
          height: 0,
          width: 0,
          data: i,
          status: polyfill.uc.LOADED
      },
      g(Q[A], I),
      this.Mc[A]) {
          for (var C = 0, e = this.Mc[A]; C < e.length; C++) {
              var o = e[C];
              o.cb(Q[A], o.opts)
          }
          delete this.Mc[A]
      }
  }
  ,
  c7.prototype.Sc = function(A) {
      var i, g = (A = void 0 === A ? {} : A).img, A = g && g.context ? (i = g.width || 0,
      g.height || 0) : (i = A.width || 0,
      A.height || 0);
      return [i, A]
  }
  ,
  c7), b7;
  function c7() {
      var A, i = b7.call(this) || this;
      return i.Fs = ((A = {})[DefaultIconInfo.TW.img] = DefaultIconInfo.TW,
      A[DefaultIconInfo.RW.img] = DefaultIconInfo.RW,
      A),
      i.Cc = 16,
      i.Uw = 3,
      i.Hw = {},
      i.Mc = {},
      i
  }
  var Counter = (Ii = polyfill.Event,
  polyfill.Ei(Ji, Ii),
  Ji.prototype.TQ = function() {
      this.zQ += 1,
      this.zQ === this.OQ && this.emit("count")
  }
  ,
  Ji.prototype.clear = function() {
      this.zQ = 0
  }
  ,
  Ji), Ii, _a$2;
  function Ji(A) {
      var i = Ii.call(this) || this;
      return i.OQ = A,
      i.zQ = 0,
      i
  }
  var LabelFormatMap$1 = (_a$2 = {},
  _a$2[polyfill.NebulaLabelFormat.id] = polyfill.NebulaLabelFormat,
  _a$2[polyfill.MapboxLabelFormat.id] = polyfill.MapboxLabelFormat,
  _a$2.nebula = polyfill.NebulaLabelFormat,
  _a$2), LabelWorker = (Mi = polyfill.Event,
  polyfill.Ei(Ni, Mi),
  Ni.prototype.iW = function(B, Q) {
      var E = this;
      void 0 === Q && (Q = {}),
      this.MW.ZL = Q.ZL || polyfill.zoomRange[1];
      var A, h = [], a = (Q.cb,
      this.parent.langForeign), l = this;
      for (A in B)
          !function(A) {
              var C, i, g, I, e, t, o;
              B.hasOwnProperty(A) && (I = (i = B[A]).tile,
              A = (g = i.params).scale,
              i = g.tag,
              h.push(i),
              g = {
                  vn: l.parent.vn
              },
              A = (g = new LabelFormatMap$1[Q.id](g)).Ns(I, {
                  ZL: l.MW.ZL,
                  zoom: I.zo.z,
                  scale: A,
                  lang: a,
                  VQ: l.parent.QZ
              }),
              C = [[I, g, A, i]],
              A = Object.keys(g.Fs),
              i = Object.keys(g.Es),
              g = [I],
              I = Date.now(),
              e = [],
              t = Q.optimalZoom,
              (o = new Counter(2)).on("count", function() {
                  E.parent.jQ.XQ(new LoadDynamicsTask(E.parent.vn,t,E.R_,E.z_,e,Q,function(A) {
                      E.emit("dynamicTextVerticeLoadedByTile", {
                          data: A.data,
                          id: Q.id
                      })
                  }
                  ), void 0, !0),
                  E.parent.yY.setNeedUpdate(!0)
              }, null, !0),
              l.R_.vW(i, {
                  tiles: g,
                  optimalZoom: t,
                  tags: h,
                  stamp: I,
                  cb: function(A) {
                      for (var i = 0, g = C; i < g.length; i++) {
                          var t = (I = g[i])[0]
                            , B = I[1]
                            , Q = I[2]
                            , I = I[3];
                          e.push({
                              tile: t,
                              gW: B,
                              SW: Q,
                              tag: I
                          })
                      }
                      o.TQ()
                  }
              }),
              l.wW(A) ? o.TQ() : l.z_.Vw(A, {
                  type: "icon",
                  cb: function() {
                      o.TQ()
                  }
              }))
          }(A)
  }
  ,
  Ni.prototype.hW = function(A, i, g) {
      var I = this;
      this.parent.jQ.XQ(new LoadDynamicsTask(this.parent.vn,this.MW.ZL,this.R_,this.z_,A,g,function(A) {
          I.emit("dynamicTextVerticeLoadedByTile", {
              data: A.data,
              id: g.id
          })
      }
      ), void 0, !0),
      this.parent.yY.setNeedUpdate(!0)
  }
  ,
  Ni.prototype.wW = function(A) {
      for (var i = this.hD, g = 0, I = 0, t = A = void 0 === A ? [] : A; I < t.length; I++) {
          var B = t[I];
          -1 !== i.indexOf(B) && g++
      }
      return g === A.length
  }
  ,
  Ni), Mi;
  function Ni(A) {
      var i = Mi.call(this) || this;
      return i.parent = A,
      i.MW = {},
      i.hD = ["https://vdata.amap.com/style_icon/2.0/icon-normal-big.png", "https://vdata.amap.com/style_icon/2.0/icon-biz-big.png"],
      i.z_ = A.z_,
      i.R_ = A.R_,
      i
  }
  var LoadDynamicsTask = (J8.prototype.play = function(A) {
      for (var i = A, g = Date.now(); 0 < i && this.offset !== this.data.length; ) {
          var I, B = [], Q = this.data[this.offset], C = Q.tile, e = Q.SW, o = (Q.gW,
          Q.tag), E = Object.keys(e).length, h = {}, a = 0;
          if (0 !== E) {
              for (var l in e)
                  e.hasOwnProperty(l) && (I = e[l],
                  I = new polyfill.eG({
                      R_: this.R_,
                      z_: this.z_
                  }).Ns(I, {
                      ZL: this.ZL,
                      zoom: C.zo.z,
                      from: "inner",
                      center: C.localCoord.center
                  }),
                  h[l] = new polyfill.La(C.zo,I),
                  ++a === E && (I = this.hQ(C, this.ZL),
                  B.push({
                      data: h,
                      XE: I,
                      tag: o
                  })));
              this.offset++,
              this.cb({
                  data: B
              }),
              i = A - (Date.now() - g)
          } else
              B.push({
                  data: C.zo
              })
      }
      return this.offset,
      this.data.length,
      this.result
  }
  ,
  Object.defineProperty(J8.prototype, "status", {
      get: function() {
          return this.offset >= this.data.length ? polyfill.vY.finish : polyfill.vY.pause
      },
      eb: !1,
      nb: !0
  }),
  J8.prototype.hQ = function(A, i) {
      if (A)
          for (var g = this.SQ(A) || [], I = 0, t = g = new LabelFormatMap$1[A.type]({
              vn: this.vn
          }).DQ(g, {
              zoom: i
          }); I < t.length; I++) {
              var B = t[I]
                , Q = B.CO;
              B.EG || (B.EG = {});
              for (var C = 0, e = Q; C < e.length; C++) {
                  var o = e[C]
                    , E = this.R_.mz(o);
                  B.EG[o] = E
              }
          }
      return g
  }
  ,
  J8.prototype.SQ = function(A) {
      return A.data && A.data.roadName || A.road
  }
  ,
  J8);
  function J8(A, i, g, I, t, B, Q) {
      this.vn = A,
      this.ZL = i,
      this.R_ = g,
      this.z_ = I,
      this.data = t,
      this.params = B,
      this.cb = Q,
      this.type = "LoadDynamicsTask",
      this.offset = 0,
      this.result = []
  }
  var InnerLabelsSourceWorker = (uj.prototype.loadData = function(t, B) {
      var Q = this
        , A = t.id === polyfill.n0.nebulaLabel ? polyfill.n0.nebula : t.id;
      (A = this.parent.dQ(A)) && A.YE ? A.YE(function(A, i) {
          i.GW;
          var g = i.cb
            , I = i.ZL
            , i = i.optimalZoom;
          polyfill.isEmpty(A) ? B && B({}) : Q.parent.yw.iW(A, {
              ZL: I,
              optimalZoom: i,
              id: t.id,
              cb: function(A) {
                  B(A),
                  g && g()
              }
          })
      }, t) : B && B({})
  }
  ,
  uj), StaticSourceID, Ij, EnumTextureIndex, Jj, ImageStatus, Kj;
  function uj(A) {
      this.parent = A,
      this.Mf = A.R_,
      this.ac = A.z_
  }
  Ij = StaticSourceID = StaticSourceID || {},
  Ij.nebula = "nebula",
  Ij.nebulaLabel = "nebulaLabel",
  Jj = EnumTextureIndex = EnumTextureIndex || {},
  Jj[Jj.dynamic = 0] = "dynamic",
  Jj[Jj.icon = 1] = "icon",
  Kj = ImageStatus = ImageStatus || {},
  Kj.BLOB = "blob",
  Kj.TOLOAD = "toload",
  Kj.LOADING = "loading",
  Kj.LOADED = "loaded",
  Kj.UNLOADED = "unloaded",
  Kj.ERROR = "error",
  Kj.RELOADING = "reloading",
  Kj.UNCOMBINED = "uncombined",
  Kj.COMBINING = "combining",
  Kj.COMBINED = "combined";
  var noop = function(A) {}
    , XHR = {
      send: function(A, i) {
          void 0 === i && (i = {});
          var g = new XMLHttpRequest
            , t = void 0 === (I = i.qw) ? noop : I
            , Q = void 0 === (B = i.Aw) ? noop : B
            , I = i.Me
            , B = i.method
            , i = i.content;
          return g.onreadystatechange = function() {
              if (4 === g.readyState && 200 === g.status) {
                  var A = g.response;
                  try {
                      t(A)
                  } catch (A) {
                      Q(A)
                  }
              } else
                  404 === g.status && (g.abort(),
                  Q(Error("404")))
          }
          ,
          g.onerror = function(A) {
              g.abort(),
              Q(A)
          }
          ,
          g.open(B || "GET", A, !0),
          g.responseType = I || "json",
          g.send(i || void 0),
          g
      }
  };
  function parserFunc(A) {
      var Y = {
          TS: function() {
              this.PS = 0
          }
      };
      Y.TS.prototype.create = function(A) {
          this.OS && this.PS === A || (this.OS = []),
          this.PS = A,
          this.FS = 0,
          this.BS = 0
      }
      ,
      Y.TS.prototype.flush = function() {
          var A = this.FS - this.BS;
          if (0 !== A) {
              for (; A--; )
                  this.ES.jS(this.OS[this.BS++]);
              this.FS >= this.PS && (this.FS = 0),
              this.BS = this.FS
          }
      }
      ,
      Y.TS.prototype.NS = function() {
          this.flush(),
          this.ES = null
      }
      ,
      Y.TS.prototype.US = function(A) {
          this.NS(),
          this.ES = A
      }
      ,
      Y.TS.prototype.init = function(A) {
          A || (this.BS = 0,
          this.FS = 0)
      }
      ,
      Y.TS.prototype.WS = function(A, i) {
          var g = this.FS - A - 1;
          for (g < 0 && (g += this.PS); i--; )
              g >= this.PS && (g = 0),
              this.OS[this.FS++] = this.OS[g++],
              this.FS >= this.PS && this.flush()
      }
      ,
      Y.TS.prototype.GS = function(A) {
          this.OS[this.FS++] = A,
          this.FS >= this.PS && this.flush()
      }
      ,
      Y.TS.prototype.HS = function(A) {
          return (A = this.FS - A - 1) < 0 && (A += this.PS),
          this.OS[A]
      }
      ,
      Y.VS = function() {}
      ,
      Y.VS.prototype.US = function(A) {
          this.ES = A
      }
      ,
      Y.VS.prototype.NS = function() {
          this.ES = null
      }
      ,
      Y.VS.prototype.init = function() {
          var A = 5;
          for (this.ZS = 0,
          this.YS = -1; A--; )
              this.ZS = this.ZS << 8 | this.ES.JS()
      }
      ,
      Y.VS.prototype.XS = function(A) {
          for (var i, g = 0, I = A; I--; )
              this.YS >>>= 1,
              i = this.ZS - this.YS >>> 31,
              this.ZS -= this.YS & i - 1,
              g = g << 1 | 1 - i,
              0 == (4278190080 & this.YS) && (this.ZS = this.ZS << 8 | this.ES.JS(),
              this.YS <<= 8);
          return g
      }
      ,
      Y.VS.prototype.qS = function(A, i) {
          var g = A[i]
            , I = (this.YS >>> 11) * g;
          return (2147483648 ^ this.ZS) < (2147483648 ^ I) ? (this.YS = I,
          A[i] += 2048 - g >>> 5,
          0 == (4278190080 & this.YS) && (this.ZS = this.ZS << 8 | this.ES.JS(),
          this.YS <<= 8),
          0) : (this.YS -= I,
          this.ZS -= I,
          A[i] -= g >>> 5,
          0 == (4278190080 & this.YS) && (this.ZS = this.ZS << 8 | this.ES.JS(),
          this.YS <<= 8),
          1)
      }
      ,
      Y.QS = function(A, i) {
          for (; i--; )
              A[i] = 1024
      }
      ,
      Y.KS = function(A) {
          this.tR = [],
          this.iR = A
      }
      ,
      Y.KS.prototype.init = function() {
          Y.QS(this.tR, 1 << this.iR)
      }
      ,
      Y.KS.prototype.decode = function(A) {
          for (var i = 1, g = this.iR; g--; )
              i = i << 1 | A.qS(this.tR, i);
          return i - (1 << this.iR)
      }
      ,
      Y.KS.prototype.eR = function(A) {
          for (var i, g = 1, I = 0, t = 0; t < this.iR; ++t)
              g = g << 1 | (i = A.qS(this.tR, g)),
              I |= i << t;
          return I
      }
      ,
      Y.nR = function(A, i, g, I) {
          for (var t, B = 1, Q = 0, C = 0; C < I; ++C)
              B = B << 1 | (t = g.qS(A, i + B)),
              Q |= t << C;
          return Q
      }
      ,
      Y.oR = function() {
          this.rR = [],
          this.aR = [],
          this.sR = [],
          this.hR = new Y.KS(8),
          this.lR = 0
      }
      ,
      Y.oR.prototype.create = function(A) {
          for (; this.lR < A; ++this.lR)
              this.aR[this.lR] = new Y.KS(3),
              this.sR[this.lR] = new Y.KS(3)
      }
      ,
      Y.oR.prototype.init = function() {
          var A = this.lR;
          for (Y.QS(this.rR, 2); A--; )
              this.aR[A].init(),
              this.sR[A].init();
          this.hR.init()
      }
      ,
      Y.oR.prototype.decode = function(A, i) {
          return 0 === A.qS(this.rR, 0) ? this.aR[i].decode(A) : 0 === A.qS(this.rR, 1) ? 8 + this.sR[i].decode(A) : 16 + this.hR.decode(A)
      }
      ,
      Y.fR = function() {
          this.uR = []
      }
      ,
      Y.fR.prototype.init = function() {
          Y.QS(this.uR, 768)
      }
      ,
      Y.fR.prototype.cR = function(A) {
          for (var i = 1; (i = i << 1 | A.qS(this.uR, i)) < 256; )
              ;
          return 255 & i
      }
      ,
      Y.fR.prototype.dR = function(A, i) {
          var g, I, t = 1;
          do {
              if (g = i >> 7 & 1,
              i <<= 1,
              t = t << 1 | (I = A.qS(this.uR, (1 + g << 8) + t)),
              g !== I) {
                  for (; t < 256; )
                      t = t << 1 | A.qS(this.uR, t);
                  break
              }
          } while (t < 256);
          return 255 & t
      }
      ,
      Y.pR = function() {}
      ,
      Y.pR.prototype.create = function(A, i) {
          var g;
          if (!this.vR || this.mR !== i || this.yR !== A)
              for (this.yR = A,
              this.xR = (1 << A) - 1,
              this.mR = i,
              this.vR = [],
              g = 1 << this.mR + this.yR; g--; )
                  this.vR[g] = new Y.fR
      }
      ,
      Y.pR.prototype.init = function() {
          for (var A = 1 << this.mR + this.yR; A--; )
              this.vR[A].init()
      }
      ,
      Y.pR.prototype.bR = function(A, i) {
          return this.vR[((A & this.xR) << this.mR) + ((255 & i) >>> 8 - this.mR)]
      }
      ,
      Y.gR = function() {
          this.wR = new Y.TS,
          this._R = new Y.VS,
          this.kR = [],
          this.MR = [],
          this.SR = [],
          this.RR = [],
          this.zR = [],
          this.CR = [],
          this.AR = [],
          this.IR = [],
          this.$R = new Y.KS(4),
          this.LR = new Y.oR,
          this.DR = new Y.oR,
          this.TR = new Y.pR,
          this.PR = -1,
          this.OR = -1,
          this.AR[0] = new Y.KS(6),
          this.AR[1] = new Y.KS(6),
          this.AR[2] = new Y.KS(6),
          this.AR[3] = new Y.KS(6)
      }
      ,
      Y.gR.prototype.FR = function(A) {
          return !(A < 0 || (this.PR !== A && (this.PR = A,
          this.OR = Math.max(this.PR, 1),
          this.wR.create(Math.max(this.OR, 4096))),
          0))
      }
      ,
      Y.gR.prototype.BR = function(A, i, g) {
          var I = 1 << g;
          return !(8 < A || 4 < i || 4 < g || (this.TR.create(i, A),
          this.LR.create(I),
          this.DR.create(I),
          this.jR = I - 1,
          0))
      }
      ,
      Y.gR.prototype.init = function() {
          var A = 4;
          for (this.wR.init(!1),
          Y.QS(this.kR, 192),
          Y.QS(this.CR, 192),
          Y.QS(this.MR, 12),
          Y.QS(this.SR, 12),
          Y.QS(this.RR, 12),
          Y.QS(this.zR, 12),
          Y.QS(this.IR, 114),
          this.TR.init(); A--; )
              this.AR[A].init();
          this.LR.init(),
          this.DR.init(),
          this.$R.init(),
          this._R.init()
      }
      ,
      Y.gR.prototype.decode = function(A, i, g) {
          var I, t, B, Q, C = 0, e = 0, o = 0, E = 0, h = 0, a = 0, l = 0;
          for (this._R.US(A),
          this.wR.US(i),
          this.init(); g < 0 || a < g; )
              if (Q = a & this.jR,
              0 === this._R.qS(this.kR, (C << 4) + Q))
                  B = this.TR.bR(a++, l),
                  l = 7 <= C ? B.dR(this._R, this.wR.HS(e)) : B.cR(this._R),
                  this.wR.GS(l),
                  C = C < 4 ? 0 : C - (C < 10 ? 3 : 6);
              else {
                  if (1 === this._R.qS(this.MR, C))
                      (I = 0) === this._R.qS(this.SR, C) ? 0 === this._R.qS(this.CR, (C << 4) + Q) && (C = C < 7 ? 9 : 11,
                      I = 1) : (0 === this._R.qS(this.RR, C) ? t = o : (0 === this._R.qS(this.zR, C) ? t = E : (t = h,
                      h = E),
                      E = o),
                      o = e,
                      e = t),
                      0 === I && (I = 2 + this.DR.decode(this._R, Q),
                      C = C < 7 ? 8 : 11);
                  else if (h = E,
                  E = o,
                  o = e,
                  I = 2 + this.LR.decode(this._R, Q),
                  C = C < 7 ? 7 : 10,
                  4 <= (B = this.AR[I <= 5 ? I - 2 : 3].decode(this._R))) {
                      if (e = (2 | 1 & B) << (Q = (B >> 1) - 1),
                      B < 14)
                          e += Y.nR(this.IR, e - B - 1, this._R, Q);
                      else if (e += this._R.XS(Q - 4) << 4,
                      (e += this.$R.eR(this._R)) < 0) {
                          if (-1 === e)
                              break;
                          return !1
                      }
                  } else
                      e = B;
                  if (a <= e || e >= this.OR)
                      return !1;
                  this.wR.WS(e, I),
                  a += I,
                  l = this.wR.HS(0)
              }
          return this.wR.flush(),
          this.wR.NS(),
          this._R.NS(),
          !0
      }
      ,
      Y.gR.prototype.ER = function(A) {
          var i;
          return !(A.size < 5) && (i = A.JS(),
          !!this.BR(i % 9, (i = ~~(i / 9)) % 5, ~~(i / 5)) && (i = A.JS(),
          i |= A.JS() << 8,
          i |= A.JS() << 16,
          i += 16777216 * A.JS(),
          this.FR(i)))
      }
      ,
      Y.NR = function(A, i) {
          var g, I = new Y.gR;
          if (!I.ER(A))
              throw new Error("Incorrect stream properties");
          if (g = A.JS(),
          g |= A.JS() << 8,
          g |= A.JS() << 16,
          g += 16777216 * A.JS(),
          A.JS(),
          A.JS(),
          A.JS(),
          A.JS(),
          !I.decode(A, i, g))
              throw new Error("Error in data stream");
          return !0
      }
      ;
      var mA = 1e-9;
      function qA(A, i, g) {
          return function(A) {
              for (var B, Q, g = 0, I = "", t = 0, g = 0; g < A.length; )
                  (B = A[g]) >>> 7 == 0 ? ("0" !== (Q = String.fromCharCode(A[g])).charCodeAt(0).toString(16) && (I += Q),
                  g += 1) : 252 == (252 & B) ? (t = (3 & A[g]) << 30,
                  t |= (63 & A[g + 1]) << 24,
                  t |= (63 & A[g + 2]) << 18,
                  t |= (63 & A[g + 3]) << 12,
                  t |= (63 & A[g + 4]) << 6,
                  t |= 63 & A[g + 5],
                  I += String.fromCharCode(t),
                  g += 6) : 248 == (248 & B) ? (t = (7 & A[g]) << 24,
                  t |= (63 & A[g + 1]) << 18,
                  t |= (63 & A[g + 2]) << 12,
                  t |= (63 & A[g + 3]) << 6,
                  t |= 63 & A[g + 4],
                  I += String.fromCharCode(t),
                  g += 5) : 240 == (240 & B) ? (t = (15 & A[g]) << 18,
                  t |= (63 & A[g + 1]) << 12,
                  t |= (63 & A[g + 2]) << 6,
                  t |= 63 & A[g + 3],
                  I += String.fromCharCode(t),
                  g += 4) : 224 == (224 & B) ? (t = (31 & A[g]) << 12,
                  t |= (63 & A[g + 1]) << 6,
                  t |= 63 & A[g + 2],
                  I += String.fromCharCode(t),
                  g += 3) : 192 == (192 & B) ? (t = (63 & A[g]) << 6,
                  t |= 63 & A[g + 1],
                  I += String.fromCharCode(t),
                  g += 2) : ("0" !== (Q = String.fromCharCode(A[g])).charCodeAt(0).toString(16) && (I += Q),
                  g += 1);
              return I.trim()
          }(A.subarray(i, g))
      }
      var I = new RegExp("^[+\\-]?[0-1]*[.]?[0-1]*$","gi");
      function ZA(A, i) {
          A = A.toString(),
          i = i.toString(),
          A = new Array(32 - A.length + 1).join("0") + A,
          i = new Array(32 - i.length + 1).join("0") + i;
          var g = I;
          return g.lastIndex = 0,
          (A = (i + A).toString().match(g)) ? (g = -1 === A[g = 0].indexOf(".") ? parseInt(A, 2) : g).toString(36).toUpperCase() : "error"
      }
      A.getUnifyJson = function(A) {
          var i = [];
          if (!(A instanceof ArrayBuffer)) {
              var g = {
                  status: 3,
                  building: {},
                  floor: {},
                  id: ""
              };
              return i.push(g),
              i
          }
          var I = new DataView(A)
            , t = 0
            , B = I.getInt16(t += 4, !1);
          t += 2;
          try {
              for (; 0 < B; ) {
                  t += 4;
                  var Q = I.getUint8(t);
                  t += 1;
                  for (var C = new ArrayBuffer(Q), e = new Uint8Array(C), o = 0; o < Q; o++)
                      e[o] = I.getUint8(t),
                      t += 1;
                  var E = qA(e, 0, Q);
                  t += 2;
                  var h = I.getInt8(t);
                  t += 1,
                  0 !== h && ((g = {}).status = h,
                  g.building = {},
                  g.floor = {},
                  g.id = E,
                  i.push(g));
                  var a = I.getInt32(t, !1);
                  t += 4;
                  var l = I.getInt32(t, !0);
                  t += 4;
                  var n = a - l;
                  if (0 !== l) {
                      for (var r = 2078870821, s = 8 * Math.ceil(l / 8), w = l % 8, c = new ArrayBuffer(s), y = new Int32Array(c), x = 0; 8 <= l; ) {
                          var d = I.getInt32(t, !0)
                            , p = I.getInt32(t + 4, !0)
                            , D = d ^ r
                            , f = 292664 ^ p;
                          y[x] = D,
                          y[x + 1] = f,
                          x += 2,
                          t += 8,
                          l -= 8
                      }
                      0 !== l && (d = I.getInt32(t, !0),
                      p = I.getInt32(t + 4, !0),
                      D = d ^ r,
                      f = 292664 ^ p,
                      y[x] = D,
                      y[x + 1] = f,
                      t += l);
                      for (var R = new Uint8Array(c), v = R.length, u = v - 8 + w, G = new Uint8Array(u), o = 0; o < u; o++)
                          G[o] = R[o];
                      for (o = 0; o < w; o++)
                          G[u - w + o] = R[v - 1 - o];
                      var S = {
                          data: G,
                          offset: 0,
                          JS: function() {
                              return this.data[this.offset++]
                          }
                      }
                        , b = {
                          data: [],
                          offset: 0,
                          jS: function(A) {
                              this.data[this.offset++] = A
                          }
                      };
                      Y.NR(S, b);
                      for (var F = b.data, u = F.length, k = new ArrayBuffer(u), M = new Int8Array(k), o = 0; o < u; o++)
                          M[o] = F[o];
                      (g = function(A) {
                          var i = {}
                            , g = {}
                            , I = new Uint8Array(A)
                            , t = new DataView(A)
                            , B = 0;
                          B += 4;
                          var Q = t.getInt32(B += 4, !0);
                          B += 4,
                          B += 4,
                          B += 4 + (C = t.getInt32(B, !0));
                          var E = ZA(e = t.getUint32(B += 4, !0).toString(2), o = t.getUint32(B + 4, !0).toString(2))
                            , h = qA(I, B += 8, B + 64)
                            , a = qA(I, B += 64, B + 64)
                            , l = t.getInt8(B += 64)
                            , n = qA(I, B += 1, B + 8)
                            , r = t.getInt16(B += 8, !0)
                            , s = t.getInt16(B + 2, !0)
                            , w = t.getFloat32(B += 4, !0)
                            , c = t.getFloat32(B + 4, !0);
                          A = t.getFloat32(B += 8, !0);
                          var C = t.getFloat32(B + 4, !0)
                            , e = t.getFloat32(B += 8, !0)
                            , o = t.getFloat32(B + 4, !0)
                            , y = t.getInt32(B += 8, !0)
                            , x = t.getInt32(B += 4, !0)
                            , d = t.getInt32(B += 4, !0);
                          B += 4;
                          for (var p = [], D = 0; D < y; D++)
                              p.push(t.getInt32(B, !0)),
                              B += 4;
                          for (var f = [], D = 0; D < d; D++)
                              f.push(t.getInt32(B, !0)),
                              B += 4;
                          for (var R = [], D = 0; D < y; D++) {
                              var v = qA(I, B, B + 48);
                              R.push(v),
                              B += 48
                          }
                          for (var u = [], D = 0; D < y; D++) {
                              var G = qA(I, B, B + 8);
                              u.push(G),
                              B += 8
                          }
                          for (var S = [], D = 0; D < x; D++) {
                              var b = t.getInt32(B, !0) * mA + c
                                , F = t.getInt32(B + 4, !0) * mA + w;
                              S.push([b, F]),
                              B += 8
                          }
                          e = {
                              type: "Feature",
                              geometry: {
                                  type: "Polygon",
                                  coordinates: [S]
                              },
                              properties: {
                                  pid: E,
                                  name_cn: h,
                                  name_en: a,
                                  default_floor: l,
                                  buildingtype: n,
                                  building_poi_style: [r, s],
                                  centerPoint: [c, w],
                                  left_bottom_Point: [A, C],
                                  width: e,
                                  height: o,
                                  numberofFloor: y,
                                  numberofGeoPoints: x,
                                  park_floor_count: d,
                                  floor_indexs: p,
                                  park_floors: f,
                                  floor_names: R,
                                  floor_nonas: u
                              }
                          };
                          for (var k = 0; k < Q; k++) {
                              var M = qA(I, B, B + 8);
                              B += 8;
                              var Y = t.getInt8(B);
                              B += 1,
                              g[Y] = {
                                  floor: {},
                                  shops: [],
                                  pubs: [],
                                  cons: []
                              };
                              var N = t.getInt16(B, !0)
                                , J = t.getInt16(B + 2, !0);
                              B += 4;
                              var U = t.getInt16(B, !0)
                                , L = t.getInt16(B + 2, !0);
                              B += 4;
                              var H = t.getInt16(B, !0)
                                , K = t.getInt16(B + 2, !0);
                              B += 4;
                              var m = t.getInt32(B, !0);
                              B += 4;
                              var q = t.getInt32(B, !0);
                              B += 4;
                              var Z = t.getInt32(B, !0);
                              B += 4;
                              var W = t.getInt32(B, !0);
                              B += 4;
                              for (var j = [], X = 0; X < W; X++) {
                                  var z = t.getInt32(B, !0);
                                  B += 4;
                                  for (var T = [], O = 0; O < z; O++)
                                      b = t.getInt32(B, !0) * mA + c,
                                      F = t.getInt32(B + 4, !0) * mA + w,
                                      T.push([b, F]),
                                      B += 8;
                                  j.push(T)
                              }
                              var V = "Polygon"
                                , P = j[0];
                              1 < W && (V = "MultiPolygon",
                              P = j),
                              g[Y].floor = {
                                  type: "Feature",
                                  geometry: {
                                      type: V,
                                      coordinates: [P]
                                  },
                                  properties: {
                                      namecode: M,
                                      index: Y,
                                      floor_region_type: [N, J],
                                      unhighlighted_floor_line_style: [U, L],
                                      highlighted_floor_line_style: [H, K],
                                      numberofShopCount: m,
                                      numberofPubCount: q,
                                      numberofConCount: Z,
                                      floor_area_count: W
                                  }
                              };
                              for (var _ = [], $ = 0; $ < m; $++) {
                                  var AA = qA(I, B, B + 128);
                                  B += 128;
                                  var iA, gA, IA = ZA(iA = t.getUint32(B, !0).toString(2), gA = t.getUint32(B + 4, !0).toString(2)), tA = qA(I, B += 8, B + 24), BA = qA(I, B += 24, B + 12);
                                  B += 12;
                                  var QA = t.getInt32(B, !0);
                                  B += 4;
                                  var CA = t.getFloat32(B, !0);
                                  B += 4;
                                  var eA = t.getInt8(B);
                                  B += 1;
                                  var oA = t.getInt16(B, !0)
                                    , EA = t.getInt16(B + 2, !0);
                                  B += 4;
                                  var hA = t.getInt16(B, !0)
                                    , aA = t.getInt16(B + 2, !0);
                                  B += 4,
                                  iA = t.getInt32(B, !0) * mA + c,
                                  gA = t.getInt32(B + 4, !0) * mA + w,
                                  B += 8;
                                  var lA = t.getInt32(B, !0);
                                  B += 4;
                                  for (var nA = [], X = 0; X < lA; X++)
                                      b = t.getInt32(B, !0) * mA + c,
                                      F = t.getInt32(B + 4, !0) * mA + w,
                                      nA.push([b, F]),
                                      B += 8;
                                  _.push(gA = {
                                      type: "Feature",
                                      geometry: {
                                          type: "Polygon",
                                          coordinates: [nA]
                                      },
                                      properties: {
                                          name: AA,
                                          pid: IA,
                                          cpid: tA,
                                          logo: BA,
                                          area: QA,
                                          rank: CA,
                                          height: eA,
                                          poitype: [oA, EA],
                                          regiontype: [hA, aA],
                                          font_anthor_point: [iA, gA],
                                          shop_point_number: lA
                                      }
                                  })
                              }
                              g[Y].shops = _;
                              for (var rA = [], sA = 0; sA < q; sA++) {
                                  var wA = qA(I, B, B + 24);
                                  B += 24;
                                  var cA, yA, xA = ZA(cA = t.getUint32(B, !0).toString(2), yA = t.getUint32(B + 4, !0).toString(2)), dA = qA(I, B += 8, B + 48);
                                  B += 48;
                                  var pA = t.getFloat32(B, !0);
                                  B += 4,
                                  cA = t.getInt16(B, !0),
                                  yA = t.getInt16(B + 2, !0),
                                  B += 4,
                                  b = t.getInt32(B, !0) * mA + c,
                                  F = t.getInt32(B + 4, !0) * mA + w,
                                  B += 8,
                                  rA.push(yA = {
                                      type: "Feature",
                                      geometry: {
                                          type: "Point",
                                          coordinates: [b, F]
                                      },
                                      properties: {
                                          cpid: wA,
                                          pid: xA,
                                          name: dA,
                                          rank: pA,
                                          poitype: [cA, yA]
                                      }
                                  })
                              }
                              g[Y].pubs = rA;
                              for (var DA = [], fA = 0; fA < Z; fA++) {
                                  var RA = qA(I, B, B + 24);
                                  B += 24;
                                  var vA, uA, GA = ZA(vA = t.getUint32(B, !0).toString(2), uA = t.getUint32(B + 4, !0).toString(2)), SA = qA(I, B += 8, B + 48);
                                  B += 48;
                                  var bA = t.getFloat32(B, !0);
                                  B += 4,
                                  vA = t.getInt16(B, !0),
                                  uA = t.getInt16(B + 2, !0),
                                  B += 4,
                                  b = t.getInt32(B, !0) * mA + c,
                                  F = t.getInt32(B + 4, !0) * mA + w,
                                  B += 8,
                                  DA.push(uA = {
                                      type: "Feature",
                                      geometry: {
                                          type: "Point",
                                          coordinates: [b, F]
                                      },
                                      properties: {
                                          cpid: RA,
                                          pid: GA,
                                          name: SA,
                                          rank: bA,
                                          poitype: [vA, uA]
                                      }
                                  })
                              }
                              g[Y].cons = DA
                          }
                          o = t.getInt32(B += 4, !0);
                          var FA = t.getInt32(B += 4 + o, !0);
                          B += 4;
                          for (var kA = [], D = 0; D < FA; D++)
                              b = t.getInt32(B, !0) * mA + c,
                              F = t.getInt32(B + 4, !0) * mA + w,
                              kA.push([b, F]),
                              B += 8;
                          e.properties.outside_outline = kA;
                          var MA, YA = {};
                          for (MA in g)
                              if (g.hasOwnProperty(MA)) {
                                  for (YA.floor = g[MA].floor,
                                  O = 0; O < g[MA].shops.length; O++) {
                                      var NA = t.getInt16(B, !0);
                                      B += 2;
                                      var JA = t.getInt16(B, !0);
                                      B += 2,
                                      g[MA].shops[O].properties.zoom_min = NA,
                                      g[MA].shops[O].properties.zoom_max = JA
                                  }
                                  for (YA.shops = g[MA].shops,
                                  O = 0; O < g[MA].pubs.length; O++) {
                                      var UA = t.getInt16(B, !0);
                                      B += 2;
                                      var LA = t.getInt16(B, !0);
                                      B += 2,
                                      g[MA].pubs[O].properties.zoom_min = UA,
                                      g[MA].pubs[O].properties.zoom_max = LA
                                  }
                                  for (YA.pubs = g[MA].pubs,
                                  O = 0; O < g[MA].cons.length; O++) {
                                      var HA = t.getInt16(B, !0);
                                      B += 2;
                                      var KA = t.getInt16(B, !0);
                                      B += 2,
                                      g[MA].cons[O].properties.zoom_min = HA,
                                      g[MA].cons[O].properties.zoom_max = KA
                                  }
                                  YA.cons = g[MA].cons,
                                  i.floor = YA
                              }
                          return o = t.getInt32(B += 4, !0),
                          o = t.getInt8(B += 4 + o),
                          B += 1,
                          e.properties.UR = o,
                          i.building = e,
                          i
                      }(k)).status = h,
                      g.id = E,
                      i.push(g)
                  }
                  t += n,
                  --B
              }
          } catch (A) {}
          return i
      }
  }
  var obj = {
      WR: parserFunc
  };
  parserFunc(obj);
  var IndoorMapBinDataParser = obj, OverlayWorker = (Un.prototype.setPathWebgl = function(A, i) {
      try {
          for (var g = new polyfill.K_, I = new polyfill.J_, t = new polyfill.oE, B = new polyfill.oE, Q = A.data, C = this.EW(Q[0][0][0]), e = 0, o = Q; e < o.length; e++) {
              for (var E = o[e], h = C.center, a = [], l = [], n = E[0], r = [], s = [], w = [], c = 0, y = n; c < y.length; c++) {
                  var x = y[c]
                    , d = polyfill.ProjectionManager.getProjection("EPSG:3857").project(x[0], x[1]);
                  a.push(d[0] - h[0], d[1] - h[1]),
                  l.push(x)
              }
              for (var p = 1, D = E.length; p < D; p++) {
                  for (var f = E[p], R = [], v = [], u = 0, G = f; u < G.length; u++)
                      x = G[u],
                      polyfill.Bs(x) ? (R.push(x.pos[0] - h[0], x.pos[1] - h[1]),
                      v.push(x.toJSON())) : (d = polyfill.ProjectionManager.getProjection("EPSG:3857").project(x[0], x[1]),
                      R.push(d[0] - h[0], d[1] - h[1]),
                      v.push(x));
                  r.push(R),
                  s.push(v)
              }
              for (var S = [], p = 0, D = a.length; p < D; p += 2)
                  S.push(polyfill.xd(a[p], a[p + 1]));
              polyfill.equals(S[0], S[S.length - 1]) || S.push(polyfill.Ex(S[0]));
              for (var b = a.length, p = 0; p < r.length; p++)
                  w.push(b / 2),
                  b += r[p].length,
                  polyfill.Util.Ig(a, r[p]);
              var F = g.Nx(a, w);
              t.add(F);
              for (var k = I.Nx(S, {
                  lineJoin: "miter"
              }).Iw, p = 0; p < r.length; p++) {
                  for (var R = r[p], M = [], Y = 0, D = R.length; Y < D; Y += 2)
                      M.push(polyfill.xd(R[Y], R[Y + 1]));
                  M.push(polyfill.xd(R[0], R[1])),
                  k += I.Nx(M, {
                      lineJoin: "miter"
                  }).Iw
              }
              B.add(k)
          }
          i(null, {
              $c: I,
              Dc: g,
              Sx: C,
              Oc: t,
              Uc: B
          })
      } catch (A) {
          i(A.message)
      }
  }
  ,
  Un.prototype.AW = function(A, i) {
      try {
          var g = {}
            , I = IndoorMapBinDataParser.getUnifyJson(A);
          if (!I)
              return !1;
          for (var t, B, Q, C, e, o, E, h = 0; h < I.length; h++)
              0 === I[h].status && (B = (t = I[h]).floor,
              Q = t.building,
              C = t.status,
              e = t.id,
              o = B.floor.properties.index,
              g[e] || (g[e] = {}),
              g[e].building = Q,
              g[e].data || (g[e].data = {}),
              E = {
                  floor: B,
                  status: C,
                  id: e,
                  building: Q
              },
              g[e].data[o] = E);
          i(null, g)
      } catch (A) {
          i(A.message, null)
      }
  }
  ,
  Un.prototype.EW = function(A) {
      if (A)
          return A = polyfill.Bs(A) ? polyfill.ProjectionManager.getProjection("EPSG:3857").project(A.KL, A.kT) : polyfill.ProjectionManager.getProjection("EPSG:3857").project(A[0], A[1]),
          polyfill.lcs.getLocalByCoord(A)
  }
  ,
  Un), wasm;
  function Un(A) {
      this.parent = A
  }
  var heap = new Array(32).fill(void 0);
  function getObject(A) {
      return heap[A]
  }
  heap.push(void 0, null, !0, !1);
  var heap_next = heap.length;
  function dropObject(A) {
      A < 36 || (heap[A] = heap_next,
      heap_next = A)
  }
  function takeObject(A) {
      var i = getObject(A);
      return dropObject(A),
      i
  }
  var cachedTextDecoder = self.TextDecoder ? new TextDecoder("utf-8",{
      ignoreBOM: !0,
      fatal: !0
  }) : {};
  cachedTextDecoder.decode && cachedTextDecoder.decode();
  var cachegetUint8Memory0 = null;
  function getUint8Memory0() {
      return cachegetUint8Memory0 = null === cachegetUint8Memory0 || cachegetUint8Memory0.buffer !== wasm.memory.buffer ? new Uint8Array(wasm.memory.buffer) : cachegetUint8Memory0
  }
  function getStringFromWasm0(A, i) {
      return cachedTextDecoder.decode(getUint8Memory0().subarray(A, A + i))
  }
  var WASM_VECTOR_LEN = 0
    , cachedTextEncoder = self.TextEncoder ? new TextEncoder : {}
    , encodeString = "function" == typeof cachedTextEncoder.encodeInto ? function(A, i) {
      return cachedTextEncoder.encodeInto(A, i)
  }
  : function(A, i) {
      var g = cachedTextEncoder.encode(A);
      return i.set(g),
      {
          read: A.length,
          jW: g.length
      }
  }
  ;
  function passStringToWasm0(A, i, g) {
      if (void 0 === g) {
          var I = cachedTextEncoder.encode(A)
            , t = i(I.length);
          return getUint8Memory0().subarray(t, t + I.length).set(I),
          WASM_VECTOR_LEN = I.length,
          t
      }
      for (var B = A.length, Q = i(B), C = getUint8Memory0(), e = 0; e < B; e++) {
          var o = A.charCodeAt(e);
          if (127 < o)
              break;
          C[Q + e] = o
      }
      return e !== B && (Q = g(Q, B, B = e + 3 * (A = 0 !== e ? A.slice(e) : A).length),
      g = getUint8Memory0().subarray(Q + e, Q + B),
      e += encodeString(A, g).jW),
      WASM_VECTOR_LEN = e,
      Q
  }
  var cachegetInt32Memory0 = null;
  function getInt32Memory0() {
      return cachegetInt32Memory0 = null === cachegetInt32Memory0 || cachegetInt32Memory0.buffer !== wasm.memory.buffer ? new Int32Array(wasm.memory.buffer) : cachegetInt32Memory0
  }
  function addHeapObject(A) {
      heap_next === heap.length && heap.push(heap.length + 1);
      var i = heap_next;
      return heap_next = heap[i],
      heap[i] = A,
      i
  }
  var RSAPublicKeyPair = (up.XW = function(A) {
      var i = Object.create(up.prototype);
      return i.UW = A,
      i
  }
  ,
  up.prototype.VW = function() {
      var A = this.UW;
      this.UW = 0,
      wasm.__wbg_rsapublickeypair_free(A)
  }
  ,
  up.prototype.init = function() {
      wasm.rsapublickeypair_init(this.UW)
  }
  ,
  up.prototype.encode = function(A) {
      try {
          var i = passStringToWasm0(A, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc)
            , g = WASM_VECTOR_LEN;
          return wasm.rsapublickeypair_encode(8, this.UW, i, g),
          getStringFromWasm0(I = getInt32Memory0()[2], t = getInt32Memory0()[3])
      } finally {
          var I = getInt32Memory0()[2]
            , t = getInt32Memory0()[3];
          wasm.__wbindgen_free(I, t)
      }
  }
  ,
  up);
  function up() {
      var A = wasm.rsapublickeypair_new();
      return up.XW(A)
  }
  function loadSync(A, i) {
      var g = new WebAssembly.Module(A);
      return {
          module: A,
          instance: new WebAssembly.Instance(g,i)
      }
  }
  function initSync(A) {
      var i = {
          wbg: {}
      };
      return i.wbg.__wbg_new_59cb74e423758ede = function() {
          return addHeapObject(new Error)
      }
      ,
      i.wbg.__wbg_stack_558ba5917b466edd = function(A, i) {
          var g = passStringToWasm0(getObject(i).stack, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc)
            , i = WASM_VECTOR_LEN;
          getInt32Memory0()[A / 4 + 1] = i,
          getInt32Memory0()[A / 4 + 0] = g
      }
      ,
      i.wbg.__wbg_error_4bb6c2a97407129a = function(A, i) {
          try {
              console.error(getStringFromWasm0(A, i))
          } finally {
              wasm.__wbindgen_free(A, i)
          }
      }
      ,
      i.wbg.__wbindgen_object_drop_ref = function(A) {
          takeObject(A)
      }
      ,
      i.wbg.__wbindgen_throw = function(A, i) {
          throw new Error(getStringFromWasm0(A, i))
      }
      ,
      i = loadSync(A, i).instance,
      wasm = i.exports
  }
  var data = "AGFzbQEAAAABaBBgAn9/AGACf38Bf2ADf39/AX9gA39/fwBgAX8AYAF/AX9gBH9/f38AYAAAYAV/f39/fwF/YAF/AX5gBX9/f39/AGAAAX9gBH9/f38Bf2AGf39/f39/AGAHf39/f39/fwF/YAJ+fwF/AqABBQN3YmcaX193YmdfbmV3XzU5Y2I3NGU0MjM3NThlZGUACwN3YmccX193Ymdfc3RhY2tfNTU4YmE1OTE3YjQ2NmVkZAAAA3diZxxfX3diZ19lcnJvcl80YmI2YzJhOTc0MDcxMjlhAAADd2JnGl9fd2JpbmRnZW5fb2JqZWN0X2Ryb3BfcmVmAAQDd2JnEF9fd2JpbmRnZW5fdGhyb3cAAAPSAdABAAUECgIAAggEAQEHAgMBAwAIAAQABQYEAAABBQ4DAAMPAwEAAQMACAELAAMGCgAGAwYBAwYBAAMAAAEBAwEBAAUGAAAFBwQBBgoDBAQBCAMDAwEBAwMBAQEBBQAAAQAFAwcAAAEGAAAFAwAAAgwAAwMNAwcAAAAEBAACCwwFBAAFAQABAAADAAAAAAMHAwAFAAAAAAIEBAUEBAMABAQEBQAAAQEBAwYFDAAAAAIBBAEBAwIDAQUFAwAHAQECAQcHAAEAAQEHAAkBBQEFCQkEAAQFAXABS0sFAwEAEQYJAX8BQYCAwAALB7IBCAZtZW1vcnkCABtfX3diZ19yc2FwdWJsaWNrZXlwYWlyX2ZyZWUAngEUcnNhcHVibGlja2V5cGFpcl9uZXcAgAEVcnNhcHVibGlja2V5cGFpcl9pbml0AIMBF3JzYXB1YmxpY2tleXBhaXJfZW5jb2RlADERX193YmluZGdlbl9tYWxsb2MAggESX193YmluZGdlbl9yZWFsbG9jAJkBD19fd2JpbmRnZW5fZnJlZQCwAQmEAQEAQQELStMBaKAB0wHMAdMBN9MBywHLAcsB0wGKAZgB0wFNzwHQAdMB0wFGzQHOAcIB0wGpAdMBtwEpYleGAaMBhgGGAdQB0wGxARNbiAHRAagBmgFppwF8xgGaASgzmwHSAWylAcwBWMABuQFMDr8BtAGyAVLTAdEBES1ewQHIAVzJAQqhtQLQAf05Af0BfyMAQeABayICJAAgAkE4aiABQYABQQBBEEHsk8AAEHYgAkFAayACKAI4IAIoAjwQJiACQTBqIAFBgAFBEEEgQfyTwAAQdiACQdAAaiACKAIwIAIoAjQQJiACQShqIAFBgAFBIEEwQYyUwAAQdiACQeAAaiACKAIoIAIoAiwQJiACQSBqIAFBgAFBMEHAAEGclMAAEHYgAkHwAGogAigCICACKAIkECYgAkEYaiABQYABQcAAQdAAQayUwAAQdiACQYABaiACKAIYIAIoAhwQJiACQRBqIAFBgAFB0ABB4ABBvJTAABB2IAJBkAFqIAIoAhAgAigCFBAmIAJBCGogAUGAAUHgAEHwAEHMlMAAEHYgAkGgAWogAigCCCACKAIMECYgAiABQYABQfAAQYABQdyUwAAQdiACQbABaiACKAIAIAIoAgQQJiACKAJAIQogAigCRCELIAIoAkghDCACKAJMIQ0gAkHYAWoiASACQdgAaiIDKQMANwMAIAIgAikDUDcD0AEgAkHAAWogAkHQAWpBARBZIAIoAsABIQ4gAigCxAEhDyACKALIASEQIAIoAswBIREgASACQegAaiIEKQMANwMAIAIgAikDYDcD0AEgAkHAAWogAkHQAWpBAhBZIAIoAsABIRIgAigCxAEhEyACKALIASEUIAIoAswBIRUgASACQfgAaiIFKQMANwMAIAIgAikDcDcD0AEgAkHAAWogAkHQAWpBAxBZIAIoAsABIRYgAigCxAEhFyACKALIASEYIAIoAswBIRkgASACQYgBaiIGKQMANwMAIAIgAikDgAE3A9ABIAJBwAFqIAJB0AFqQQQQWSACKALAASEaIAIoAsQBIRsgAigCyAEhHCACKALMASEdIAEgAkGYAWoiBykDADcDACACIAIpA5ABNwPQASACQcABaiACQdABakEFEFkgAigCwAEhHiACKALEASEfIAIoAsgBISAgAigCzAEhISABIAJBqAFqIggpAwA3AwAgAiACKQOgATcD0AEgAkHAAWogAkHQAWpBBhBZIAIoAsABISIgAigCxAEhIyACKALIASEkIAIoAswBISUgASACQbgBaiIJKQMANwMAIAIgAikDsAE3A9ABIAJBwAFqIAJB0AFqQQcQWSACKALAASEmIAIoAsQBIScgAigCyAEhKCACKALMASEpIAEgAikDSDcDACACIAIpA0A3A9ABIAJBwAFqIAJB0AFqQQEQWiACKALAASEqIAIoAsQBISsgAigCyAEhLCACKALMASEtIAMoAgAhLiACKAJQIS8gAigCVCEwIAIoAlwhMSABIAQpAwA3AwAgAiACKQNgNwPQASACQcABaiACQdABakEBEFkgAigCwAEhMiACKALEASEzIAIoAsgBITQgAigCzAEhNSABIAUpAwA3AwAgAiACKQNwNwPQASACQcABaiACQdABakECEFkgAigCwAEhNiACKALEASE3IAIoAsgBITggAigCzAEhOSABIAYpAwA3AwAgAiACKQOAATcD0AEgAkHAAWogAkHQAWpBAxBZIAIoAsABITogAigCxAEhOyACKALIASE8IAIoAswBIT0gASAHKQMANwMAIAIgAikDkAE3A9ABIAJBwAFqIAJB0AFqQQQQWSACKALAASE+IAIoAsQBIT8gAigCyAEhQCACKALMASFBIAEgCCkDADcDACACIAIpA6ABNwPQASACQcABaiACQdABakEFEFkgAigCwAEhQiACKALEASFDIAIoAsgBIUQgAigCzAEhRSABIAkpAwA3AwAgAiACKQOwATcD0AEgAkHAAWogAkHQAWpBBhBZIAIoAsABIUYgAigCxAEhRyACKALIASFIIAIoAswBIUkgASACKQNINwMAIAIgAikDQDcD0AEgAkHAAWogAkHQAWpBAhBaIAIoAsABIUogAigCxAEhSyACKALIASFMIAIoAswBIU0gASADKQMANwMAIAIgAikDUDcD0AEgAkHAAWogAkHQAWpBARBaIAIoAsABIU4gAigCxAEhTyACKALIASFQIAIoAswBIVEgBCgCACFSIAIoAmAhUyACKAJkIVQgAigCbCFVIAEgBSkDADcDACACIAIpA3A3A9ABIAJBwAFqIAJB0AFqQQEQWSACKALAASFWIAIoAsQBIVcgAigCyAEhWCACKALMASFZIAEgBikDADcDACACIAIpA4ABNwPQASACQcABaiACQdABakECEFkgAigCwAEhWiACKALEASFbIAIoAsgBIVwgAigCzAEhXSABIAcpAwA3AwAgAiACKQOQATcD0AEgAkHAAWogAkHQAWpBAxBZIAIoAsABIV4gAigCxAEhXyACKALIASFgIAIoAswBIWEgASAIKQMANwMAIAIgAikDoAE3A9ABIAJBwAFqIAJB0AFqQQQQWSACKALAASFiIAIoAsQBIWMgAigCyAEhZCACKALMASFlIAEgCSkDADcDACACIAIpA7ABNwPQASACQcABaiACQdABakEFEFkgAigCwAEhZiACKALEASFnIAIoAsgBIWggAigCzAEhaSABIAIpA0g3AwAgAiACKQNANwPQASACQcABaiACQdABakEDEFogAigCwAEhaiACKALEASFrIAIoAsgBIWwgAigCzAEhbSABIAMpAwA3AwAgAiACKQNQNwPQASACQcABaiACQdABakECEFogAigCwAEhbiACKALEASFvIAIoAsgBIXAgAigCzAEhcSABIAQpAwA3AwAgAiACKQNgNwPQASACQcABaiACQdABakEBEFogAigCwAEhciACKALEASFzIAIoAsgBIXQgAigCzAEhdSAFKAIAIXYgAigCcCF3IAIoAnQheCACKAJ8IXkgASAGKQMANwMAIAIgAikDgAE3A9ABIAJBwAFqIAJB0AFqQQEQWSACKALAASF6IAIoAsQBIXsgAigCyAEhfCACKALMASF9IAEgBykDADcDACACIAIpA5ABNwPQASACQcABaiACQdABakECEFkgAigCwAEhfiACKALEASF/IAIoAsgBIYABIAIoAswBIYEBIAEgCCkDADcDACACIAIpA6ABNwPQASACQcABaiACQdABakEDEFkgAigCwAEhggEgAigCxAEhgwEgAigCyAEhhAEgAigCzAEhhQEgASAJKQMANwMAIAIgAikDsAE3A9ABIAJBwAFqIAJB0AFqQQQQWSACKALAASGGASACKALEASGHASACKALIASGIASACKALMASGJASABIAIpA0g3AwAgAiACKQNANwPQASACQcABaiACQdABakEEEFogAigCwAEhigEgAigCxAEhiwEgAigCyAEhjAEgAigCzAEhjQEgASADKQMANwMAIAIgAikDUDcD0AEgAkHAAWogAkHQAWpBAxBaIAIoAsABIY4BIAIoAsQBIY8BIAIoAsgBIZABIAIoAswBIZEBIAEgBCkDADcDACACIAIpA2A3A9ABIAJBwAFqIAJB0AFqQQIQWiACKALAASGSASACKALEASGTASACKALIASGUASACKALMASGVASABIAUpAwA3AwAgAiACKQNwNwPQASACQcABaiACQdABakEBEFogAigCwAEhlgEgAigCxAEhlwEgAigCyAEhmAEgAigCzAEhmQEgBigCACGaASACKAKAASGbASACKAKEASGcASACKAKMASGdASABIAcpAwA3AwAgAiACKQOQATcD0AEgAkHAAWogAkHQAWpBARBZIAIoAsABIZ4BIAIoAsQBIZ8BIAIoAsgBIaABIAIoAswBIaEBIAEgCCkDADcDACACIAIpA6ABNwPQASACQcABaiACQdABakECEFkgAigCwAEhogEgAigCxAEhowEgAigCyAEhpAEgAigCzAEhpQEgASAJKQMANwMAIAIgAikDsAE3A9ABIAJBwAFqIAJB0AFqQQMQWSACKALAASGmASACKALEASGnASACKALIASGoASACKALMASGpASABIAIpA0g3AwAgAiACKQNANwPQASACQcABaiACQdABakEFEFogAigCwAEhqgEgAigCxAEhqwEgAigCyAEhrAEgAigCzAEhrQEgASADKQMANwMAIAIgAikDUDcD0AEgAkHAAWogAkHQAWpBBBBaIAIoAsABIa4BIAIoAsQBIa8BIAIoAsgBIbABIAIoAswBIbEBIAEgBCkDADcDACACIAIpA2A3A9ABIAJBwAFqIAJB0AFqQQMQWiACKALAASGyASACKALEASGzASACKALIASG0ASACKALMASG1ASABIAUpAwA3AwAgAiACKQNwNwPQASACQcABaiACQdABakECEFogAigCwAEhtgEgAigCxAEhtwEgAigCyAEhuAEgAigCzAEhuQEgASAGKQMANwMAIAIgAikDgAE3A9ABIAJBwAFqIAJB0AFqQQEQWiACKALAASG6ASACKALEASG7ASACKALIASG8ASACKALMASG9ASAHKAIAIb4BIAIoApABIb8BIAIoApQBIcABIAIoApwBIcEBIAEgCCkDADcDACACIAIpA6ABNwPQASACQcABaiACQdABakEBEFkgAigCwAEhwgEgAigCxAEhwwEgAigCyAEhxAEgAigCzAEhxQEgASAJKQMANwMAIAIgAikDsAE3A9ABIAJBwAFqIAJB0AFqQQIQWSACKALAASHGASACKALEASHHASACKALIASHIASACKALMASHJASABIAIpA0g3AwAgAiACKQNANwPQASACQcABaiACQdABakEGEFogAigCwAEhygEgAigCxAEhywEgAigCyAEhzAEgAigCzAEhzQEgASADKQMANwMAIAIgAikDUDcD0AEgAkHAAWogAkHQAWpBBRBaIAIoAsABIc4BIAIoAsQBIc8BIAIoAsgBIdABIAIoAswBIdEBIAEgBCkDADcDACACIAIpA2A3A9ABIAJBwAFqIAJB0AFqQQQQWiACKALAASHSASACKALEASHTASACKALIASHUASACKALMASHVASABIAUpAwA3AwAgAiACKQNwNwPQASACQcABaiACQdABakEDEFogAigCwAEh1gEgAigCxAEh1wEgAigCyAEh2AEgAigCzAEh2QEgASAGKQMANwMAIAIgAikDgAE3A9ABIAJBwAFqIAJB0AFqQQIQWiACKALAASHaASACKALEASHbASACKALIASHcASACKALMASHdASABIAcpAwA3AwAgAiACKQOQATcD0AEgAkHAAWogAkHQAWpBARBaIAIoAsABId4BIAIoAsQBId8BIAIoAsgBIeABIAIoAswBIeEBIAgoAgAh4gEgAigCoAEh4wEgAigCpAEh5AEgAigCrAEh5QEgASAJKQMANwMAIAIgAikDsAE3A9ABIAJBwAFqIAJB0AFqQQEQWSACKALAASHmASACKALEASHnASACKALIASHoASACKALMASHpASABIAIpA0g3AwAgAiACKQNANwPQASACQcABaiACQdABakEHEFogAigCwAEh6gEgAigCxAEh6wEgAigCyAEh7AEgAigCzAEh7QEgASADKQMANwMAIAIgAikDUDcD0AEgAkHAAWogAkHQAWpBBhBaIAIoAsABIQMgAigCxAEh7gEgAigCyAEh7wEgAigCzAEh8AEgASAEKQMANwMAIAIgAikDYDcD0AEgAkHAAWogAkHQAWpBBRBaIAIoAsABIQQgAigCxAEh8QEgAigCyAEh8gEgAigCzAEh8wEgASAFKQMANwMAIAIgAikDcDcD0AEgAkHAAWogAkHQAWpBBBBaIAIoAsABIQUgAigCxAEh9AEgAigCyAEh9QEgAigCzAEh9gEgASAGKQMANwMAIAIgAikDgAE3A9ABIAJBwAFqIAJB0AFqQQMQWiACKALAASEGIAIoAsQBIfcBIAIoAsgBIfgBIAIoAswBIfkBIAEgBykDADcDACACIAIpA5ABNwPQASACQcABaiACQdABakECEFogAigCwAEhByACKALEASH6ASACKALIASH7ASACKALMASH8ASABIAgpAwA3AwAgAiACKQOgATcD0AEgAkHAAWogAkHQ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lJnAADYCECAAQSM2AiwgAEGAmcAANgJYIABCATcCTCAAQeybwAA2AkggACAAQShqNgIgIAAgAEHIAGo2AjggACAAQcQAajYCMCAAIABBQGs2AiggAEEQakH0m8AAEI0BAAsgACgCCCIBIAEoAgAiAUF/ajYCACABQQFGBEAgAEEIahBRCyAAQeAAaiQAC5IEAQd/IwBBMGsiAyQAAn9BACACRQ0AGiADQShqIQgCQAJAAkACQANAIAAoAggtAAAEQCAAKAIAQcylwABBBCAAKAIEKAIMEQIADQULIANBCjYCKCADQoqAgIAQNwMgIAMgAjYCHCADQQA2AhggAyACNgIUIAMgATYCECADQQhqQQogASACEBsCfwJAAkAgAygCCEEBRgRAIAMoAgwhBANAIAMgBCADKAIYakEBaiIENgIYAkAgBCADKAIkIgVJBEAgAygCFCEHDAELIAMoAhQiByAESQ0AIAVBBU8NByAEIAVrIgYgAygCEGoiCSAIRg0EIAkgCCAFEHFFDQQLIAMoAhwiBiAESSAHIAZJcg0CIAMgAyAFakEnai0AACADKAIQIARqIAYgBGsQGyADKAIEIQQgAygCAEEBRg0ACwsgAyADKAIcNgIYCyAAKAIIQQA6AAAgAgwBCyAAKAIIQQE6AAAgBkEBagshBCAAKAIEIQUgACgCACAERSACIARGciIGRQRAIAIgBE0NAyABIARqLAAAQb9/TA0DCyABIAQgBSgCDBECAA0EIAZFBEAgAiAETQ0EIAEgBGosAABBv39MDQQLIAEgBGohASACIARrIgINAAtBAAwECyAFQQRB4KnAABBVAAsgASACQQAgBEGYqsAAEAgACyABIAIgBCACQaiqwAAQCAALQQELIANBMGokAAvQAwIFfwF+IwBBQGoiAyQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAgBBAWsOAgIAAQsgAigCBCIEIAJBCGooAgBqIgIgBE8NAiADQShqIAJBABC4ASADKQMoIQggAEEBNgIAIAAgCDcCBAwKCyABKAIEIgIEQCACQQF0IQIMAgtBBCECDAILIAIoAgQiBCACQQhqKAIAaiICIARJDQIgASgCBEEBdCIEIAIgBCACSxshAgsgAkEASA0CCyADQTBqIAEQhwEgAygCMCIGDQIgA0EIaiACQQEQdSADKAII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QbABEH8aIAFBwAFqJAALcAECfwJAIAAoAgAiAUEQaigCACICRQ0AIAJBADoAACABQRRqKAIAIgJFDQAgASgCECACQQEQvAELIAFBHGooAgBBAUEBELwBIAAoAgAiASABKAIEIgFBf2o2AgQgAUEBRgRAIAAoAgBBMEEIELwBCwtbAQJ/IwBBIGsiAiQAIAFBHGooAgAhAyABKAIYIAJBGGogACgCACIAQRBqKQIANwMAIAJBEGogAEEIaikCADcDACACIAApAgA3AwggAyACQQhqEAsgAkEgaiQAC2sBAn8jAEEQayIGJAACQCAAIAEgAiADIAQQFiIFDQAgBkEIaiADIAAgASAEKAIMEQYAQQAhBSAGKAIIDQAgBigCDCIFIAIoAgA2AgggAiAFNgIAIAAgASACIAMgBBAWIQULIAZBEGokACAFC20BAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakE6NgIAIANCAjcCDCADQaSlwAA2AgggA0E6NgIkIAMgA0EgajYCGCADIAM2AiggAyADQQRqNgIgIANBCGogAhCTAQALbQEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQTo2AgAgA0ICNwIMIANBgKnAADYCCCADQTo2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEJMBAAttAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBOjYCACADQgI3AgwgA0G0qcAANgIIIANBOjYCJCADIANBIGo2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQkwEAC1YBAn8jAEEgayICJAAgAUEcaigCACEDIAEoAhggAkEYaiAAQRBqKQIANwMAIAJBEGogAEEIaikCADcDACACIAApAgA3AwggAyACQQhqEAsgAkEgaiQAC1sBAn8jAEEQayICJAAgACgCACIAKAIIIQMgACgCACEAIAIgARCVASADBEADQCACIAA2AgwgAiACQQxqECsgAEEBaiEAIANBf2oiAw0ACwsgAhCUASACQRBqJAALXQEDfyAAIAEoAgAiBCACQR9xIgN0NgIAIAAgASgCDCADdCABKAIIIgVBACACa0EfcSICdnI2AgwgACAFIAN0IAEoAgQiASACdnI2AgggACABIAN0IAQgAnZyNgIEC10BAn8gACABKAIMIgMgAkEfcSIEdjYCDCAAIANBACACa0EfcSICdCABKAIIIgMgBHZyNgIIIAAgAyACdCABKAIEIgMgBHZyNgIEIAAgAyACdCABKAIAIAR2cjYCAAtZAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQZyWwAAgAkEIahALIAJBIGokAAtZAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQdinwAAgAkEIahALIAJBIGokAAtWAQF/IwBBIGsiAiQAIAIgADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQeSLwAAgAkEIahALIAJBIGokAAtWAQF/IwBBIGsiAiQAIAIgADYCBCACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQdinwAAgAkEIahALIAJBIGokAAtrAQN/IAAoAgwhASAAQYCAxAA2AgwCQCABQYCAxABHDQBBgIDEACEBIAAoAgAiAiAAKAIERg0AIAAgAkEBajYCACAAKAIIIgMgAi0AACICQQR2ai0AACEBIAAgAyACQQ9xai0AADYCDAsgAQtSAQF/IwBBQGoiAiQAIAIgARBHIAJBEGogAhAVIAJBIGogAkEQahBIIAJBOGogAkEoaikDADcDACACIAIpAyA3AzAgACACQTBqEHAgAkFAayQAC1wBAX8jAEEgayICJAAgAkEANgIIIAJCATcDACACQRhqIAFBCGopAgA3AwAgAiABKQIANwMQIAIgAkEQahAdIABBCGogAigCCDYCACAAIAIpAwA3AgAgAkEgaiQAC0oBAX8jAEEgayICJAAgACgCACACQRhqIAFBEGopAgA3AwAgAkEQaiABQQhqKQIANwMAIAIgASkCADcDCCACQQhqEF0gAkEgaiQAC1gBAX8jAEGAGWsiAiQAIAFFBEAQwwEACyACIAEQlwEgAigCBEEANgIAIAJBCGogAUH0GBB/GiAAIAJBCGpBBHJB8BgQfxogAUH0GEEEELwBIAJBgBlqJAALTAEBfyAAQQF0QYBAcSAAQQJ0QYAYcSAAQQN0QYABcSAAQf//A3EiAUEBdkHwAHEgAEEPcXJyIAFBAnZBgAZxcnIgAUEDdkGAIHFycgtTAQF/IwBBIGsiAyQAIANBCGogAUEIaikBADcDACADIAEpAQA3AwAgA0EYaiACQQhqKQEANwMAIAMgAikBADcDECAAIAMgA0EQahBPIANBIGokAAtiAQF/IwBBMGsiACQAIABBKjYCDCAAQYSBwAA2AgggAEEkakEBNgIAIABCATcCFCAAQYikwAA2AhAgAEE7NgIsIAAgAEEoajYCICAAIABBCGo2AiggAEEQakGQgsAAEJMBAAtKAQF/IwBBIGsiAiQAIAJBCGogASABQRBqECQgAi0ACEEBRwRAEGYACyAAIAIpAAk3AAAgAEEIaiACQRFqKQAANwAAIAJBIGokAAtWAQJ/IAEoAgAhAiABQQA2AgACQCACBEAgASgCBCEDQQhBBBC1ASIBRQ0BIAEgAzYCBCABIAI2AgAgAEGchsAANgIEIAAgATYCAA8LAAtBCEEEEMcBAAtMAQF/IwBBEGsiAiQAIAIgARCJASACIAA2AgwgAiACQQxqQeiawAAQKiACIABBBGo2AgwgAiACQQxqQdihwAAQKiACEEUgAkEQaiQAC04BAX8jAEEQayIEJAACQCABKAIEIAJrIANPBEAgAEEANgIADAELIARBCGogAzYCACAEIAI2AgQgBEEBNgIAIAAgASAEEBILIARBEGokAAtUAQF/IwBBIGsiAiQAIAJBCGogARAvIAJBADYCGCACIAIpAwg3AxAgAkEQakG8g8AAIAEQtgEgAEEIaiACKAIYNgIAIAAgAikDEDcCACACQSBqJAALVgECfyABKAIAIQIgAUEANgIAAkAgAgRAIAEoAgQhA0EIQQQQtQEiAUUNASABIAM2AgQgASACNgIAIABBwKHAADYCBCAAIAE2AgAPCwALQQhBBBDHAQALTgEBfyMAQfAYayIBJAAgASAAQfAYEH8hAUH0GEEEELUBIgBFBEBB9BhBBBDHAQALIABBADYCACAAQQRqIAFB8BgQfxogAUHwGGokACAAC0kBAX8jAEEQayIDJAAgAyAAIAEgAhBqAkAgAygCAEEBRgRAIANBCGooAgAiAEUNASADKAIEIAAQxwEACyADQRBqJAAPCxC+AQALRwEBfyMAQRBrIgIkACACIAAgARBBAkAgAigCAEEBRgRAIAJBCGooAgAiAEUNASACKAIEIAAQxwEACyACQRBqJAAPCxC+AQALVAAgACABLwEOOwEOIAAgAS8BCDsBCCAAIAEoAQQ2AQQgACABLwEMQX9zOwEMIAAgAS8BCkF/czsBCiAAIAEvAQJBf3M7AQIgACABLwEAQX9zOwEAC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCAAQQFqIQAgAUEBaiEBIAJBf2oiAg0BDAILCyAEIAVrIQMLIAMLSgACfyABQYCAxABHBEBBASAAKAIYIAEgAEEcaigCACgCEBEBAA0BGgsgAkUEQEEADwsgACgCGCACIAMgAEEcaigCACgCDBECAAsLQgEEfwJAIAEoAgAiAiABKAIETw0AIAJBAWoiAyACSQ0AIAEoAgAhBCABIAM2AgBBASEFCyAAIAQ2AgQgACAFNgIAC1wBAX8jAEEgayIDJAAgA0GAgMQANgIMIANB+IPAADYCCCADIAE2AgAgAyABIAJqNgIEIANBGGogA0EIaikDADcDACADIAMpAwA3AxAgACADQRBqEGEgA0EgaiQACy0AAkAgAQRAIAEgAhC1ASICDQFBACECDAELQQAhAQsgACABNgIEIAAgAjYCAAs7AAJAIAQgA08EQCACIARJDQEgACAEIANrNgIEIAAgASADajYCAA8LIAMgBCAFEFYACyAEIAIgBRBVAAtIAQF/IwBBIGsiAyQAIANBFGpBADYCACADQbijwAA2AhAgA0IBNwIEIAMgATYCHCADIAA2AhggAyADQRhqNgIAIAMgAhCTAQALOgEBfyMAQRBrIgAkAEHUxsAAKAIAQQNHBEAgAEEBOgALIAAgAEELajYCDCAAQQxqEA0LIABBEGokAAs8AQF/An9BACABKAIAIgIgASgCBEYNABogASACQQFqNgIAIAItAAAhAUEBCyECIAAgAToAASAAIAI6AAALOwEBfyMAQRBrIgIkACACQQhqIAEoAgAQeSACLQAIIQEgACACLQAJOgABIAAgAUEBcToAACACQRBqJAALOQECfiAAIAEpAQAiAj0BACAAIAIgAkIgiIU9AQYgACACQhCIIgMgAkIwiIU9AQQgACAC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rgELCxoBAX8gACgCCCIBIAAoAgRHBEAgACABEG8LCxoAIABCADcCBCAAQQQ2AgAgAEEMakIANwIACxYAIABBCHRBgID8B3EgAEEYdHJBEHYLHQAgASgCAEUEQAALIABBwKHAADYCBCAAIAE2AgALGwAgARCiASAAIAEoAgg2AgQgACABKAIANgIACxwAIAEoAhhBxKPAAEELIAFBHGooAgAoAgwRAgALHAAgASgCGEHPo8AAQQ4gAUEcaigCACgCDBECAAscACABKAIYQYS4wABBBSABQRxqKAIAKAIMEQIACxcAIAAgAjYCCCAAIAI2AgQgACABNgIACxcAIAAgAjYCCCAAIAM2AgQgACABNgIACxIAIABBDHQgAEHw/wNxQQR2cgsNACAAIAEgAiADEIEBCxAAIAEEQCAAIAFBARC8AQsLFgAgACABKAIINgIEIAAgASgCADYCAAsQACABBEAgACABQQQQvAELCxIAIAAoAgAgASABIAJqEDBBAAsVACABIAAoAgAiACgCACAAKAIEEAkLDAAgAARADwsQwwEACxQAIAAoAgAgASAAKAIEKAIMEQEACwgAIAAgARA6Cw4AIAAgASABIAJqEIsBCxAAIAAoAgAgASACELYBQQALEAAgACACNgIEIAAgATYCAAsQACABIAAoAgAgACgCBBAJCw0AIAAtAABBEHFBBHYLDQAgAC0AAEEgcUEFdgsKACAAIAEgAhA8Cw0AIAAgACgCCCABEG4LEQBBl6PAAEERQaijwAAQdwALDgAgACgCABoDQAwACwALCwAgADUCACABECULDQAgACgCACABIAIQEQsLACAAKAIAIAEQHwsNAEGwj8AAQRsQxQEACw4AQcuPwABBzwAQxQEACwkAIAAgARAEAAsGACABEAYLGQAgACABQfjGwAAoAgAiAEEkIAAbEQAAAAsLACAAKAIAIAEQLQsNACABQaiowABBAhAJCwYAEL4BAAsGACABEBwLDABC5K7ChZebpYgRCwQAIAELBABBAAsFAEGABAsEAEEBCwwAQvTQ1KnQ97O+ZgsMAEKNybDVpKrTlVYLAwABCwMAAQsL3D4CAEGAgMAAC8k+L1VzZXJzL3lhbmdkb25nbGFpLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Flcy1zb2Z0LTAuNS4wL3NyYy9iaXRzbGljZS5ycwAAAAAAEABhAAAAGgAAACgAAAAAABAAYQAAACEAAAAiAAAAU2xpY2UgbXVzdCBiZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIGFycmF5L1VzZXJzL3lhbmdkb25nbGFpLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2dlbmVyaWMtYXJyYXktMC4xNC40L3NyYy9saWIucnOuABAAYgAAAEoCAAAJAAAAL1VzZXJzL3lhbmdkb25nbGFpLy5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2Flcy1zb2Z0LTAuNS4wL3NyYy9pbXBscy5ycwAAIAEQAF4AAAA1AAAAGQAAAHNyYy9saWIucnMAAJABEAAKAAAAZwAAABQAAACQARAACgAAAGcAAAAJAAAAYW1hcC13ZWKQARAACgAAADYAAAAaAAAASW5zdGFuY2Ugbm90IGNyZWF0ZWSQARAACgAAAEYAAAAVAAAAMDEyMzQ1Njc4OWFiY2RlZi9Vc2Vycy95YW5nZG9uZ2xhaS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9hZXMtc29mdC0wLjUuMC9zcmMvZXhwYW5kLnJzAAgCEABfAAAANwAAACYAAAAIAhAAXwAAADgAAAAaAAAACAIQAF8AAAA5AAAAGgAAAAgCEABfAAAAOgAAABoAAAAIAhAAXwAAADcAAAAJAAAACAIQAF8AAABAAAAAFwAAAAgCEABfAAAAQgAAADMAAAAIAhAAXwAAAEcAAAAcAAAACAIQAF8AAABHAAAACQAAAAgCEABfAAAATwAAACEAAAABAAAACAAAAAQAAAACAAAAAwAAAAQAAAAIAAAABAAAAAUAAAAvVXNlcnMveWFuZ2RvbmdsYWkvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L3NyYy9saWJjb3JlL2FsbG9jL2xheW91dC5ycwAAACwDEABxAAAA5wAAAAkAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAAYAAAAAAAAAAQAAAAcAAAAIAAAAAAAAAAEAAAAJAAAACgAAAAsAAAAMAAAABAAAAAQAAAANAAAADgAAAC9Vc2Vycy95YW5nZG9uZ2xhaS8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLXg4Nl82NC1hcHBsZS1kYXJ3aW4vbGliL3J1c3RsaWIvc3JjL3J1c3Qvc3JjL2xpYnN0ZC9zeW5jL29uY2UucnMAAAAYBBAAbQAAAAgBAAApAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZQAPAAAAAAAAAAEAAAAQAAAAEQAAABIAAAATAAAAAAAAAAEAAAAQAAAAEQAAABIAAAAUAAAABAAAAAQAAAAVAAAAFgAAABcAAAAMBRAAAAAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvVXNlcnMveWFuZ2RvbmdsYWkvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L3NyYy9saWJhbGxvYy9zdHJpbmcucnMASwUQAGwAAACMCAAACQAAABkAAAAAAAAAAQAAABoAAAAKClN0YWNrOgoKCgobAAAABAAAAAQAAAAcAAAAHQAAAB4AAABhc3NlcnRpb24gZmFpbGVkOiBgKGxlZnQgPT0gcmlnaHQpYAogIGxlZnQ6IGBgLAogcmlnaHQ6IGBgOiD8BRAALQAAACkGEAAMAAAANQYQAAMAAABkZXN0aW5hdGlvbiBhbmQgc291cmNlIHNsaWNlcyBoYXZlIGRpZmZlcmVudCBsZW5ndGhzUAYQADQAAAAvVXNlcnMveWFuZ2RvbmdsYWkvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L3NyYy9saWJjb3JlL21hY3Jvcy9tb2QucnMAjAYQAG8AAAAoAAAACQAAAFRyaWVkIHRvIHNocmluayB0byBhIGxhcmdlciBjYXBhY2l0eS9Vc2Vycy95YW5nZG9uZ2xhaS8ucnVzdHVwL3Rv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BAAAFgAAAHRocmVhZCBuYW1lIG1heSBub3QgY29udGFpbiBpbnRlcmlvciBudWxsIGJ5dGVzAHgNEAAYAAAAcwQAABoAAABpbmNvbnNpc3RlbnQgc3RhdGUgaW4gdW5wYXJreA0QABgAAACrBAAAEgAAAHgNEAAYAAAAuQQAAA4AAABhdHRlbXB0ZWQgdG8gdXNlIGEgY29uZGl0aW9uIHZhcmlhYmxlIHdpdGggdHdvIG11dGV4ZXNzcmMvbGlic3RkL3N5bmMvY29uZHZhci5ycw4PEAAaAAAAPwIAABIAAABzcmMvbGlic3RkL3N5bmMvb25jZS5yc2Fzc2VydGlvbiBmYWlsZWQ6IHN0YXRlX2FuZF9xdWV1ZSAmIFNUQVRFX01BU0sgPT0gUlVOTklORzgPEAAXAAAApwEAABUAAABPbmNlIGluc3RhbmNlIGhhcyBwcmV2aW91c2x5IGJlZW4gcG9pc29uZWQAADgPEAAXAAAAiwEAABUAAAA4DxAAFwAAAOgBAAAJAAAAOA8QABcAAAD0AQAAHgAAAFBvaXNvbkVycm9yIHsgaW5uZXI6IC4uIH1jYW5ub3QgbW9kaWZ5IHRoZSBwYW5pYyBob29rIGZyb20gYSBwYW5pY2tpbmcgdGhyZWFkc3JjL2xpYnN0ZC9wYW5pY2tpbmcucnNBEBAAFwAAAGoAAAAJAAAAQRAQABcAAAChAQAADwAAAEEQEAAXAAAAogEAAA8AAAAxAAAAEAAAAAQAAAAyAAAAMwAAADQAAAAMAAAABAAAADUAAAAlAAAACAAAAAQAAAA2AAAANwAAACUAAAAIAAAABAAAADgAAABOdWxFcnJvciUAAAAEAAAABAAAADkAAABjYW4ndCBibG9jayB3aXRoIHdlYiBhc3NlbWJseXNyYy9saWJzdGQvc3lzL3dhc20vY29uZHZhci5ycwAFERAAHgAAABUAAAAJAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXhzcmMvbGlic3RkL3N5cy93YXNtL211dGV4LnJzVBEQABwAAAAVAAAACQAAAHNyYy9saWJhbGxvYy9yYXdfdmVjLnJzY2FwYWNpdHkgb3ZlcmZsb3eAERAAFwAAAG4CAAAFAAAAYC4uALkREAACAAAAQm9ycm93RXJyb3JCb3Jyb3dNdXRF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vCFPZdHhTwDaIVAA4OFRMOFhU+zioVTQ6OFUIAAuVfABv1UAcAAHAC0BAQECAQIBAUgLMBUQAWUHAgYCAgEEIwEeG1sLOgkJARgEAQkBAwEFKwN3DwEgNwEBAQQIBAEDBwoCHQE6AQEBAgQIAQkBCgIaAQICOQEEAgQCAgMDAR4CAwELAjkBBAUBAgQBFAIWBgEBOgEBAgEECAEHAwoCHgE7AQEBDAEJASgBAwE5AwUDAQQHAgsCHQE6AQIBAgEDAQUCBwILAhwCOQIBAQIECAEJAQoCHQFIAQQBAgMBAQgBUQECBwwIYgECCQsGSgIbAQEBAQE3DgEFAQIFCwEkCQFmBAEGAQICAhkCBAMQBA0BAgIGAQ8BAAMAAx0DHQIeAkACAQcIAQILCQEtA3cCIgF2AwQCCQEGA9sCAgE6AQEHAQEBAQIIBgoCATARPwQwBwEBBQEoCQwCIAQCAgEDOAEBAgMBAQM6CAICmAMBDQEHBAEGAQMCxjoBBQABwyEAA40BYCAABmkCAAQBCiACUAIAAQMBBAEZAgUBlwIaEg0BJggZCy4DMAECBAICJwFDBgICAgIMAQgBLwEzAQEDAgIFAgEBKgIIAe4BAgEEAQABABAQEAACAAHiAZUFAAMBAgUEKAMEAaUCAAQAApkLsAE2DzgDMQQCAkUDJAUBCD4BDAI0CQoEAgFfAwIBAQIGAaABAwgVAjkCAQEBARYBDgcDBcMIAgMBARcBUQECBgEBAgEBAgEC6wECBAYCAQIbAlUIAgEBAmoBAQECBgEBZQMCBAEFAAkBAvUBCgIBAQQBkAQCAgQBIAooBgIECAEJBgIDLg0BAgAHAQYBAVIWAgcBAgECegYDAQECAQcBAUgCAwEBAQACAAU7BwABPwRRAQACAAEBAwQFCAgCBx4ElAMANwQyCAEOARYFAQ8ABwERAgcBAgEFAAcABAAHbQcAYIDwAExheW91dEVycnByaXZhdGUAQajHwAALAQEAbwlwcm9kdWNlcnMCCGxhbmd1YWdlAQRSdXN0AAxwcm9jZXNzZWQtYnkDBXJ1c3RjHTEuNDQuMCAoNDljYWU1NTc2IDIwMjAtMDYtMDEpBndhbHJ1cwYwLjE4LjAMd2FzbS1iaW5kZ2VuBjAuMi42NQ==", RSAWorker = (Xp.prototype.transform = function(A) {
      if (this.instance)
          return this.instance.encode(A)
  }
  ,
  Xp.prototype.dE = function(A) {
      initSync(base64ToBuffer(data)),
      this.instance = new RSAPublicKeyPair,
      this.instance.init(),
      A && A(null)
  }
  ,
  Xp), env;
  function Xp(A, i) {
      this.parent = A,
      this.dE(i)
  }
  function base64ToBuffer(A) {
      for (var i = atob(A), g = new Uint8Array(i.length), I = 0, t = i.length; I < t; I++)
          g[I] = i.charCodeAt(I);
      return g.buffer
  }
  var env = polyfill.Support.DW ? {
      movingDraw: sharedChunk.movingDraw,
      db: sharedChunk.db,
      nebulaVersion: sharedChunk.nebulaVersion,
      host: sharedChunk.host
  } : {
      movingDraw: window.movingDraw
  }, AMapWorker = (hq = polyfill.Event,
  polyfill.Ei(iq, hq),
  iq.prototype.initCryptWorker = function(A, i, g) {
      g()
  }
  ,
  iq.prototype.setId = function(A, i, g) {
      this._id = i,
      g()
  }
  ,
  iq.prototype.loadNebulaSourceTile = function(A, i, g) {
      var I = this
        , t = i.url
        , B = i.ya
        , Q = i.zoom
        , C = i.projectionId
        , e = i.optimalZoom
        , o = i.Ca
        , E = i.mS
        , h = i.viewMode
        , a = i.showBuildingBlock
        , l = i.ZL
        , n = i.hH
        , i = i.kZ;
      return this.Ww.bw(t, B, Q, e, C, o, E, h, a, l, n, function(A, i) {
          I.Zw ? I.$w.push({
              done: g,
              type: "NebulaSourceTile",
              data: i
          }) : g(A, i)
      }, i)
  }
  ,
  iq.prototype.decodeNebulaSourceTile = function(A, i, g) {
      var I = i.url
        , t = (i.ya,
      i.zoom)
        , B = i.projectionId
        , Q = i.optimalZoom
        , C = (i.Ca,
      i.mS)
        , e = i.viewMode
        , o = i.showBuildingBlock
        , E = i.ZL
        , i = (i.hH,
      i.buffer);
      return this.Ww.pQ(i, B, t, e, o, C, Q, E, g, I)
  }
  ,
  iq.prototype.loadNebulaSourceTileSdf = function(A, i, g) {
      var I = this
        , t = i.url
        , B = i.ya
        , Q = (i.zoom,
      i.projectionId)
        , C = (i.optimalZoom,
      i.Ca,
      i.mS,
      i.viewMode,
      i.showBuildingBlock,
      i.mH)
        , i = i.ZL;
      return this.Ww.bW(t, B, Q, i, C, function(A, i) {
          I.Zw ? I.$w.push({
              done: g,
              type: "NebulaSourceTileSdf",
              data: i
          }) : g(A, i)
      })
  }
  ,
  iq.prototype.decodeNebulaSourceTileSdf = function(A, i, g) {
      var I = this
        , t = i.url
        , B = i.ya
        , Q = (i.zoom,
      i.projectionId)
        , C = (i.optimalZoom,
      i.Ca,
      i.mS,
      i.viewMode,
      i.showBuildingBlock,
      i.mH)
        , e = i.ZL
        , o = i.buffer
        , i = -1 !== t.indexOf("/oversea")
        , t = new polyfill.vH;
      return this.Ww.HQ(o, i, Q, B, t, C, e, function(A, i) {
          I.Zw ? I.$w.push({
              done: g,
              type: "NebulaSourceTileSdf",
              data: i
          }) : g(A, i)
      }),
      {
          cancel: t.cancel
      }
  }
  ,
  iq.prototype.loadDistrictSourceTile = function(A, i, g) {
      var I = i.url
        , t = i.tileCoord
        , B = i.projectionId
        , Q = i.tileSize;
      return i.styles,
      this._getDistrictSourceWorker(),
      this.kW.bw(I, t, B, Q, g)
  }
  ,
  iq.prototype.loadMapboxVTSourceTile = function(A, i, g) {
      var I = this
        , t = i.url
        , B = i.tileCoord
        , Q = i.projectionId
        , C = i.tileSize
        , i = i.styles;
      return this._getMapboxVTSourceWorker(),
      this.QJ.bw(t, B, Q, C, i, function(A, i) {
          I.Zw ? I.$w.push({
              done: g,
              type: "loadMapboxVTSourceTile",
              data: i
          }) : g(A, i)
      })
  }
  ,
  iq.prototype.reBufferMapboxVTSource = function(A, i, g) {
      var I = i.MX
        , i = i.styles;
      return this._getMapboxVTSourceWorker(),
      this.QJ.mX(I, i, g)
  }
  ,
  iq.prototype.loadMapboxSourceTile = function(A, i, g) {
      var I = i.url
        , t = i.tileCoord
        , B = i.projectionId
        , Q = i.tileSize
        , C = i.styles
        , i = i.adcode;
      return this._getMapboxSourceWorker(),
      this.vQ.bw(I, t, B, Q, C, i, g)
  }
  ,
  iq.prototype.updateMapStyle = function(A, i, g) {
      polyfill.Support.amapRunTime && (polyfill.Support.amapRunTime["style-parse-begin"] || (polyfill.Support.amapRunTime["style-parse-begin"] = Date.now()));
      var I = JSON.parse(i.value);
      polyfill.Support.amapRunTime && (polyfill.Support.amapRunTime["style-parse-end"] || (polyfill.Support.amapRunTime["style-parse-end"] = Date.now())),
      this.vn = new polyfill.StyleParser(i.TY),
      this.vn.jY(I),
      this.Ww.emit("styleReady")
  }
  ,
  iq.prototype.updateUserStyle = function(A, i, g) {
      this.vn && this.vn.setStyle(i.Kd),
      g && g()
  }
  ,
  iq.prototype.sendHttp = function(A, i) {
      this.R_.protocol = i.protocol,
      this.protocol = i.protocol
  }
  ,
  iq.prototype.updateParams = function(A, i) {
      this.params = polyfill.assign(this.params, i),
      i.langForeign && (this.langForeign = i.langForeign),
      i.QG && (this.QG = i.QG)
  }
  ,
  iq.prototype.getSDFData = function(A, i, g) {
      this.R_.loadData(i, {
          cb: function(A) {
              g(null, A)
          }
      })
  }
  ,
  iq.prototype.getImages = function(A, i) {
      var B = this
        , Q = i.data
        , C = i.cb
        , e = this.z_;
      e.loadImages(Q, {
          cb: function(A) {
              for (var i = [], g = 0, I = Q; g < I.length; g++) {
                  var t = I[g];
                  i.push({
                      url: t,
                      data: e.getImage(t)
                  })
              }
              B.Uh.send("imageLoaded", {
                  data: i,
                  cb: C
              })
          },
          type: "icon"
      })
  }
  ,
  iq.prototype.setPathWebgl = function(A, i, g) {
      this.BW.setPathWebgl(i, g)
  }
  ,
  iq.prototype.sendIndoorRequest = function(A, i, g) {
      var I = this;
      this.BW.AW(i, function(A, i) {
          I.Zw ? I.$w.push({
              done: g,
              type: "sendIndoorRequest",
              data: i
          }) : g(A, i)
      })
  }
  ,
  iq.prototype.Qw = function(A) {
      this.Uh.send("NebulaTileSdfLoaded", polyfill.ca)
  }
  ,
  iq.prototype.setMainThreadBusy = function(A, i) {
      if (env.movingDraw)
          this.Zw = !1;
      else {
          if (this.Zw = i,
          !this.Zw)
              for (var g = 0, I = this.$w; g < I.length; g++) {
                  var t = I[g];
                  t.done ? t.done(null, t.data) : this.Uh.send(t.type, t.data)
              }
          this.$w = []
      }
  }
  ,
  iq.prototype.loadWordsByFront = function(A) {
      this.Uh.send("loadWordsByFront", A.Es, A.cb)
  }
  ,
  iq.prototype.innerLabelsLoadData = function(A, i, g) {
      this.NQ.loadData(i, g)
  }
  ,
  iq.prototype.dQ = function(A) {
      return this.lQ[A]
  }
  ,
  iq.prototype.deleteTileStaticSDF = function(A, i) {
      this.IW.NW(i)
  }
  ,
  iq.prototype.PQ = function(A, i) {
      this.QZ = i
  }
  ,
  iq.prototype._getNebulaSourceWorker = function() {
      return this.Ww || (this.Ww = new NebulaSourceWorker(this)),
      this.Ww
  }
  ,
  iq.prototype._getDistrictSourceWorker = function() {
      return this.kW || (this.kW = new DistrictSourceWorker(this)),
      this.kW
  }
  ,
  iq.prototype._getMapboxVTSourceWorker = function() {
      return this.QJ || (this.QJ = new polyfill.bX),
      this.QJ
  }
  ,
  iq.prototype._getMapboxSourceWorker = function() {
      var A;
      return this.vQ || (A = this.vQ = new MapboxSourceWorker(this),
      this.lQ[A.id] = A),
      this.vQ
  }
  ,
  iq.prototype.Fb = function() {
      var I = this;
      this.z_.on("iconImageLoaded", function(A) {
          delete A.type,
          I.Uh.send("iconImageLoaded", A)
      }),
      this.R_.on("dynamicTextSDFInfoLoaded", function(A) {
          delete A.type,
          I.Uh.send("dynamicTextSDFInfoLoaded", A.data)
      }),
      this.yw.on("dynamicTextVerticeLoaded", function(A) {
          var i, g = A;
          I.Zw ? (i = A.type,
          delete A.type,
          I.$w.push({
              type: i,
              data: g
          })) : (delete A.type,
          I.Uh.send("dynamicTextVerticeLoaded", g))
      }),
      this.yw.on("dynamicTextVerticeLoadedByTile", function(A) {
          var i, g = A;
          I.Zw ? (i = A.type,
          delete A.type,
          I.$w.push({
              type: i,
              data: g
          })) : (delete A.type,
          I.Uh.send("dynamicTextVerticeLoadedByTile", g))
      })
  }
  ,
  iq), hq;
  function iq(A, i, g) {
      var I = hq.call(this) || this;
      return I.key = i,
      I.GW = g,
      I.lQ = {},
      I.Zw = !1,
      I._id = "-1",
      I.protocol = "https",
      I.Yw = XHR,
      I.jQ = new polyfill.MY,
      I.QZ = "",
      I.$w = [],
      I.Uh = new polyfill.Bh(A,I),
      I.self = A,
      A = I.z_ = new ImageManagerWorker,
      I.R_ = new polyfill.jb({
          parent: I,
          z_: A
      }),
      I.IW = new polyfill.xW(I,XHR),
      I.Ww = new NebulaSourceWorker(I),
      I.NQ = new InnerLabelsSourceWorker(I),
      I.lQ[I.Ww.id] = I.Ww,
      I.yw = new LabelWorker(I),
      I.BW = new OverlayWorker(I),
      polyfill.Support.wasm && (I.PW = new RSAWorker(I)),
      I.Fb(),
      I.yY = new polyfill.wY({
          render: function() {
              I.jQ.exec(10)
          },
          check: function() {
              return I.jQ.xY()
          }
      }),
      I
  }
  return polyfill.Support.DW && (self.Wh = new AMapWorker(self,sharedChunk.key,env),
  self.StyleParser = polyfill.StyleParser),
  AMapWorker
}
)(sharedChunk);
